diff options
author | akalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-15 20:46:19 +0000 |
---|---|---|
committer | akalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-15 20:46:19 +0000 |
commit | b8773eb4a6a8a7256801ca724f6ff8b578a9dbd4 (patch) | |
tree | 8dc5859495a46aed5fad5045803cf4f999dcad11 | |
parent | d5b42bdd76ee895b0b4f6895400ba23c60decc96 (diff) | |
download | chromium_src-b8773eb4a6a8a7256801ca724f6ff8b578a9dbd4.zip chromium_src-b8773eb4a6a8a7256801ca724f6ff8b578a9dbd4.tar.gz chromium_src-b8773eb4a6a8a7256801ca724f6ff8b578a9dbd4.tar.bz2 |
[SPDY] Make DoSend{DomainBoundCert,Body}Complete() take a result parameter
r194127 erroneously made the code assume that DoSend{DomainBoundCert,Body}()
would always return OK or ERR_IO_PENDING.
DoSendHeadersComplete() is okay as-is since DoSendHeaders()
always returns ERR_IO_PENDING.
BUG=238429
Review URL: https://chromiumcodereview.appspot.com/14990016
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@200344 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | net/spdy/spdy_stream.cc | 16 | ||||
-rw-r--r-- | net/spdy/spdy_stream.h | 4 |
2 files changed, 12 insertions, 8 deletions
diff --git a/net/spdy/spdy_stream.cc b/net/spdy/spdy_stream.cc index 08cb603..6f97132 100644 --- a/net/spdy/spdy_stream.cc +++ b/net/spdy/spdy_stream.cc @@ -731,8 +731,7 @@ int SpdyStream::DoLoop(int result) { result = DoSendDomainBoundCert(); break; case STATE_SEND_DOMAIN_BOUND_CERT_COMPLETE: - CHECK_EQ(result, OK); - result = DoSendDomainBoundCertComplete(); + result = DoSendDomainBoundCertComplete(result); break; case STATE_SEND_HEADERS: CHECK_EQ(result, OK); @@ -747,8 +746,7 @@ int SpdyStream::DoLoop(int result) { result = DoSendBody(); break; case STATE_SEND_BODY_COMPLETE: - CHECK_EQ(result, OK); - result = DoSendBodyComplete(); + result = DoSendBodyComplete(result); break; // This is an intermediary waiting state. This state is reached when all // data has been sent, but no data has been received. @@ -858,7 +856,10 @@ int SpdyStream::DoSendDomainBoundCert() { return ERR_IO_PENDING; } -int SpdyStream::DoSendDomainBoundCertComplete() { +int SpdyStream::DoSendDomainBoundCertComplete(int result) { + if (result != OK) + return result; + DCHECK_EQ(just_completed_frame_type_, CREDENTIAL); io_state_ = STATE_SEND_HEADERS; return OK; @@ -901,7 +902,10 @@ int SpdyStream::DoSendBody() { return delegate_->OnSendBody(); } -int SpdyStream::DoSendBodyComplete() { +int SpdyStream::DoSendBodyComplete(int result) { + if (result != OK) + return result; + if (just_completed_frame_type_ != DATA) { NOTREACHED(); return ERR_UNEXPECTED; diff --git a/net/spdy/spdy_stream.h b/net/spdy/spdy_stream.h index 78cea20..0f5f541 100644 --- a/net/spdy/spdy_stream.h +++ b/net/spdy/spdy_stream.h @@ -360,11 +360,11 @@ class NET_EXPORT_PRIVATE SpdyStream { int DoGetDomainBoundCert(); int DoGetDomainBoundCertComplete(int result); int DoSendDomainBoundCert(); - int DoSendDomainBoundCertComplete(); + int DoSendDomainBoundCertComplete(int result); int DoSendHeaders(); int DoSendHeadersComplete(); int DoSendBody(); - int DoSendBodyComplete(); + int DoSendBodyComplete(int result); int DoReadHeaders(); int DoReadHeadersComplete(int result); int DoOpen(); |