diff options
-rw-r--r-- | net/spdy/spdy_network_transaction.cc | 4 | ||||
-rw-r--r-- | net/spdy/spdy_network_transaction_unittest.cc | 12 | ||||
-rw-r--r-- | net/spdy/spdy_session.cc | 4 |
3 files changed, 14 insertions, 6 deletions
diff --git a/net/spdy/spdy_network_transaction.cc b/net/spdy/spdy_network_transaction.cc index c35c934..34b38fb 100644 --- a/net/spdy/spdy_network_transaction.cc +++ b/net/spdy/spdy_network_transaction.cc @@ -260,8 +260,10 @@ int SpdyNetworkTransaction::DoSendRequest() { } int SpdyNetworkTransaction::DoSendRequestComplete(int result) { - if (result < 0) + if (result < 0) { + stream_ = NULL; return result; + } next_state_ = STATE_READ_HEADERS; return OK; diff --git a/net/spdy/spdy_network_transaction_unittest.cc b/net/spdy/spdy_network_transaction_unittest.cc index 7520b38..377c7a5 100644 --- a/net/spdy/spdy_network_transaction_unittest.cc +++ b/net/spdy/spdy_network_transaction_unittest.cc @@ -809,8 +809,10 @@ class SpdyNetworkTransactionTest : public PlatformTest { TestCompletionCallback callback; - int rv = trans->Start(&request, &callback, log); - EXPECT_EQ(ERR_IO_PENDING, rv); + out.rv = trans->Start(&request, &callback, log); + EXPECT_LT(out.rv, 0); // We expect an IO Pending or some sort of error. + if (out.rv != ERR_IO_PENDING) + return out; out.rv = callback.WaitForResult(); if (out.rv != OK) @@ -822,8 +824,8 @@ class SpdyNetworkTransactionTest : public PlatformTest { out.status_line = response->headers->GetStatusLine(); out.response_info = *response; // Make a copy so we can verify. - rv = ReadTransaction(trans.get(), &out.response_data); - EXPECT_EQ(OK, rv); + out.rv = ReadTransaction(trans.get(), &out.response_data); + EXPECT_EQ(OK, out.rv); // Verify that we consumed all test data. EXPECT_TRUE(data->at_read_eof()); @@ -1804,7 +1806,7 @@ TEST_F(SpdyNetworkTransactionTest, PartialWrite) { EXPECT_EQ("hello!", out.response_data); } -TEST_F(SpdyNetworkTransactionTest, DISABLED_ConnectFailure) { +TEST_F(SpdyNetworkTransactionTest, ConnectFailure) { MockConnect connects[] = { MockConnect(true, ERR_NAME_NOT_RESOLVED), MockConnect(false, ERR_NAME_NOT_RESOLVED), diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc index 882da55..9362917 100644 --- a/net/spdy/spdy_session.cc +++ b/net/spdy/spdy_session.cc @@ -764,6 +764,10 @@ void SpdySession::CloseAllStreams(net::Error code) { abandoned_push_streams.Add(pushed_streams_.size()); pushed_streams_.clear(); } + + // We also need to drain the queue. + while (queue_.size()) + queue_.pop(); } int SpdySession::GetNewStreamId() { |