diff options
author | vandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-21 20:17:06 +0000 |
---|---|---|
committer | vandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-21 20:17:06 +0000 |
commit | 8c060008bcd463da28c49c58f6d88f632ad6cfe4 (patch) | |
tree | bfe08b9a1ba7b2e200ae9e8cfb57c6d4fb195e04 /net/spdy/spdy_session_pool.h | |
parent | 596f7e7939f195288d621f18302f4cc5a2e97b17 (diff) | |
download | chromium_src-8c060008bcd463da28c49c58f6d88f632ad6cfe4.zip chromium_src-8c060008bcd463da28c49c58f6d88f632ad6cfe4.tar.gz chromium_src-8c060008bcd463da28c49c58f6d88f632ad6cfe4.tar.bz2 |
Revert of Fix SPDY error-handling if the connection gets closed just after use. (https://codereview.chromium.org/200723004/)
Reason for revert:
Linux LSan isn't happy: AddressSanitizer: stack-buffer-overflow
http://build.chromium.org/p/chromium.memory/builders/Linux%20ASan%2BLSan%20Tests%20%281%29/builds/650/steps/net_unittests/logs/GetUploadProgressBeforeInitialization_0
Original issue's description:
> Fix SPDY error-handling if the connection gets closed just after use.
>
> - Make SpdySession::IsReused() return true if the underlying socket was
> UNUSED_IDLE. This makes the HttpNetworkTransaction-level retry try a fresh
> socket in case a preconnected socket was stale.
>
> - If the SpdySession closes in an event loop iteration between
> HttpStreamFactoryImplJob::DoCreateStream and OnNewSpdySessionReadyCallback,
> propogate the error to the request to prevent it from hanging. Do so by
> creating the originating request's SpdyHttpStream as soon as the SpdySession
> is created so it can sample SpdySession::IsReused() and advise
> HttpNetworkTransaction on error.
>
> - Delay pumping the SpdySession read loop by an event loop iteration. This
> simplifies some logic and ensures that HttpNetworkTransaction receives a
> SpdyHttpStream to advise retry logic. This does mean we lose the error code;
> it now follows the asynchronous case and turns into ERR_CONNECTION_CLOSED in
> SpdyHttpStream::InitializeStream.
>
> BUG=352156
>
> Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=258647
TBR=rch@chromium.org,davidben@chromium.org
NOTREECHECKS=true
NOTRY=true
BUG=352156
Review URL: https://codereview.chromium.org/208663003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@258657 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/spdy/spdy_session_pool.h')
-rw-r--r-- | net/spdy/spdy_session_pool.h | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/net/spdy/spdy_session_pool.h b/net/spdy/spdy_session_pool.h index 0fad5d2..c44e9de 100644 --- a/net/spdy/spdy_session_pool.h +++ b/net/spdy/spdy_session_pool.h @@ -79,14 +79,15 @@ class NET_EXPORT SpdySessionPool // encountered when connecting the SSL socket, with OK meaning there // was no error. // - // Returns the new SpdySession. Note that the SpdySession begins reading from - // |connection| on a subsequent event loop iteration, so it may be closed - // immediately afterwards if the first read of |connection| fails. - base::WeakPtr<SpdySession> CreateAvailableSessionFromSocket( + // If successful, OK is returned and |available_session| will be + // non-NULL and available. Otherwise, an error is returned and + // |available_session| will be NULL. + net::Error CreateAvailableSessionFromSocket( const SpdySessionKey& key, scoped_ptr<ClientSocketHandle> connection, const BoundNetLog& net_log, int certificate_error_code, + base::WeakPtr<SpdySession>* available_session, bool is_secure); // Find an available session for the given key, or NULL if there isn't one. |