diff options
author | mbelshe@chromium.org <mbelshe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-31 19:20:16 +0000 |
---|---|---|
committer | mbelshe@chromium.org <mbelshe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-31 19:20:16 +0000 |
commit | 58cebf8f4760a748c486475f046ee201b32b0642 (patch) | |
tree | 0d0bf870d4ebba7661efe4d5ecb4b081cd252749 /net/spdy/spdy_session.cc | |
parent | d983b84870429ce4e860277262cf3f151ac4144d (diff) | |
download | chromium_src-58cebf8f4760a748c486475f046ee201b32b0642.zip chromium_src-58cebf8f4760a748c486475f046ee201b32b0642.tar.gz chromium_src-58cebf8f4760a748c486475f046ee201b32b0642.tar.bz2 |
When we get a silent TCP RST, SPDY connections need to retry.
Fixing this involved a couple of minor changes.
* We were not tracking whether a SPDY session should be retried.
The HTTP logic uses "is_socket_idle()" to determine if the socket
was once good and is worth retrying. Because SPDY is not serialized
added methods through the SpdySession and SpdyHttpStream for this.
(See ShouldResendFailedRequest)
* The spdy_http_stream was not notifying the caller when
OnSendHeadersComplete occurred when there is no upload body.
This isn't strictly necessary, but keeps the HttpNetworkTransaction
state more consistent.
BUG=50510
TEST=SpdyNetworkTransactionTest
Review URL: http://codereview.chromium.org/3064021
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@54464 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/spdy/spdy_session.cc')
-rw-r--r-- | net/spdy/spdy_session.cc | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc index d195fb9..2aa2289 100644 --- a/net/spdy/spdy_session.cc +++ b/net/spdy/spdy_session.cc @@ -166,6 +166,7 @@ SpdySession::SpdySession(const HostPortPair& host_port_pair, streams_pushed_count_(0), streams_pushed_and_claimed_count_(0), streams_abandoned_count_(0), + frames_received_(0), sent_settings_(false), received_settings_(false), in_session_pool_(true), @@ -1139,6 +1140,8 @@ void SpdySession::OnControl(const spdy::SpdyControlFrame* frame) { } } + frames_received_++; + switch (type) { case spdy::GOAWAY: OnGoAway(*reinterpret_cast<const spdy::SpdyGoAwayControlFrame*>(frame)); |