summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorakalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-15 20:46:19 +0000
committerakalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-15 20:46:19 +0000
commitb8773eb4a6a8a7256801ca724f6ff8b578a9dbd4 (patch)
tree8dc5859495a46aed5fad5045803cf4f999dcad11
parentd5b42bdd76ee895b0b4f6895400ba23c60decc96 (diff)
downloadchromium_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.cc16
-rw-r--r--net/spdy/spdy_stream.h4
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();