summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/spdy/spdy_network_transaction.cc4
-rw-r--r--net/spdy/spdy_network_transaction_unittest.cc12
-rw-r--r--net/spdy/spdy_session.cc4
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() {