summaryrefslogtreecommitdiffstats
path: root/net/spdy/spdy_proxy_client_socket.cc
diff options
context:
space:
mode:
authorjgraettinger@chromium.org <jgraettinger@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-30 00:23:40 +0000
committerjgraettinger@chromium.org <jgraettinger@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-30 00:23:40 +0000
commitf38c7f3e7d1ec3b0c61ce752fdaa4ff42d98255d (patch)
treea74c1dfb8cb3d3294aa7b8ae41da0ff58a88104d /net/spdy/spdy_proxy_client_socket.cc
parentbd6d31f60bfcb61fc2bc6076b8f759e2fdd63176 (diff)
downloadchromium_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.cc1
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;