diff options
author | jgraettinger@chromium.org <jgraettinger@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-30 00:23:40 +0000 |
---|---|---|
committer | jgraettinger@chromium.org <jgraettinger@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-30 00:23:40 +0000 |
commit | f38c7f3e7d1ec3b0c61ce752fdaa4ff42d98255d (patch) | |
tree | a74c1dfb8cb3d3294aa7b8ae41da0ff58a88104d /net/spdy/spdy_proxy_client_socket.cc | |
parent | bd6d31f60bfcb61fc2bc6076b8f759e2fdd63176 (diff) | |
download | chromium_src-f38c7f3e7d1ec3b0c61ce752fdaa4ff42d98255d.zip chromium_src-f38c7f3e7d1ec3b0c61ce752fdaa4ff42d98255d.tar.gz chromium_src-f38c7f3e7d1ec3b0c61ce752fdaa4ff42d98255d.tar.bz2 |
Defer SpdySession destruction to support closing writes
Replace the STATE_CLOSED availability state with STATE_DRAINING, where:
* The read-pump will not run, and no frames can be read.
* No new frames may be queued in the sessions's write_queue.
* However, the write-pump will continue to run.
SpdySession's write-pump will destroy the session iff it's draining, the
write queue is empty and no in-flight writes remain. As this (and
~SpdySessionPool()) are now the only locations where SpdySessions may be
destroyed, session lifetime is more know-able and some WeakPtrs are
removed.
Some tests have been updated to include closing RST_STREAMS sent by the
session. This reflects current behavior. A future CL will add GOAWAY
frames upon session errors.
BUG=375033
Review URL: https://codereview.chromium.org/305823003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@273680 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/spdy/spdy_proxy_client_socket.cc')
-rw-r--r-- | net/spdy/spdy_proxy_client_socket.cc | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/net/spdy/spdy_proxy_client_socket.cc b/net/spdy/spdy_proxy_client_socket.cc index 01c30b9..6a87b54 100644 --- a/net/spdy/spdy_proxy_client_socket.cc +++ b/net/spdy/spdy_proxy_client_socket.cc @@ -410,6 +410,7 @@ int SpdyProxyClientSocket::DoReadReplyComplete(int result) { if (SanitizeProxyRedirect(&response_, request_.url)) { redirect_has_load_timing_info_ = spdy_stream_->GetLoadTimingInfo(&redirect_load_timing_info_); + // Note that this triggers a RST_STREAM_CANCEL. spdy_stream_->DetachDelegate(); next_state_ = STATE_DISCONNECTED; return ERR_HTTPS_PROXY_TUNNEL_RESPONSE; |