Chromium Code Reviews| 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..ad21922eb43a2a688be1366f1c4284fb77274c43 100644 |
| --- a/net/http/http_stream_factory_impl_job.h |
| +++ b/net/http/http_stream_factory_impl_job.h |
| @@ -140,6 +140,45 @@ class HttpStreamFactoryImpl::Job { |
| STATUS_SUCCEEDED |
| }; |
| + // Wrapper class for SpdySessionPool methods to enforce certificate |
| + // requirements for SpdySessions. |
| + class ValidSpdySessionPool { |
| + public: |
| + ValidSpdySessionPool(SpdySessionPool* spdy_session_pool, |
| + GURL& origin_url, |
| + bool is_spdy_alternate); |
| + |
| + // The following two methods return OK if a SpdySession was not found (in |
| + // which case |spdy_session| is set to nullptr), or if one was found (in |
| + // which case |spdy_session| is set to it) and it 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. They return the |
| + // appropriate error code otherwise, in which case |spdy_session| should not |
| + // be used. |
|
Ryan Hamilton
2015/04/27 15:35:55
nit: This comment is confusing, I think because it
Bence
2015/04/28 14:42:21
Done.
|
| + 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 if |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 +366,8 @@ class HttpStreamFactoryImpl::Job { |
| // preconnect. |
| int num_streams_; |
| + scoped_ptr<ValidSpdySessionPool> valid_spdy_session_pool_; |
| + |
| // Initialized when we create a new SpdySession. |
| base::WeakPtr<SpdySession> new_spdy_session_; |