| Index: net/http/http_stream_factory_impl_job.h
|
| diff --git a/net/http/http_stream_factory_impl_job.h b/net/http/http_stream_factory_impl_job.h
|
| index 27c5f00ec0fafa39f80396c0413b239326e30e7a..fcc1e71f301b281b4a59fd3d3d7b316c7239f937 100644
|
| --- a/net/http/http_stream_factory_impl_job.h
|
| +++ b/net/http/http_stream_factory_impl_job.h
|
| @@ -140,6 +140,39 @@ class HttpStreamFactoryImpl::Job {
|
| STATUS_SUCCEEDED
|
| };
|
|
|
| + // Wrapper class for SpdySessionPool to guarantee certificate requirements for
|
| + // SpdySessions.
|
| + class ValidSpdySessionPool {
|
| + public:
|
| + ValidSpdySessionPool(SpdySessionPool* spdy_session_pool,
|
| + GURL& origin_url,
|
| + bool is_spdy_alternate);
|
| +
|
| + int FindAvailableSession(const SpdySessionKey& key,
|
| + const BoundNetLog& net_log,
|
| + base::WeakPtr<SpdySession>* spdy_session);
|
| +
|
| + int CreateAvailableSessionFromSocket(
|
| + const SpdySessionKey& key,
|
| + scoped_ptr<ClientSocketHandle> connection,
|
| + const BoundNetLog& net_log,
|
| + int certificate_error_code,
|
| + bool is_secure,
|
| + base::WeakPtr<SpdySession>* spdy_session);
|
| +
|
| + private:
|
| + // Returns OK if |spdy_session| has an associated SSL certificate with is
|
| + // valid for |origin_url_|, or if this requirement does not apply because
|
| + // the Job is not a SPDY alternate job, or |spdy_session| is null. Returns
|
| + // appropriate error code otherwise.
|
| + int CheckAlternativeServiceValidityForOrigin(
|
| + base::WeakPtr<SpdySession> spdy_session);
|
| +
|
| + SpdySessionPool* const spdy_session_pool_;
|
| + const GURL origin_url_;
|
| + const bool is_spdy_alternate_;
|
| + };
|
| +
|
| void OnStreamReadyCallback();
|
| void OnWebSocketHandshakeStreamReadyCallback();
|
| // This callback function is called when a new SPDY session is created.
|
| @@ -327,6 +360,9 @@ class HttpStreamFactoryImpl::Job {
|
| // preconnect.
|
| int num_streams_;
|
|
|
| + // Wrapper class for SpdySessionPool to enforce certificate requirements.
|
| + scoped_ptr<ValidSpdySessionPool> valid_spdy_session_pool_;
|
| +
|
| // Initialized when we create a new SpdySession.
|
| base::WeakPtr<SpdySession> new_spdy_session_;
|
|
|
|
|