summaryrefslogtreecommitdiffstats
path: root/net/spdy
diff options
context:
space:
mode:
authormbelshe@chromium.org <mbelshe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-29 21:16:54 +0000
committermbelshe@chromium.org <mbelshe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-29 21:16:54 +0000
commitab8949ac2e50880bc8adb40080287ad89758d772 (patch)
treefce9e0fe875b3c072c80e39f28da63f4bd727696 /net/spdy
parent2b6417aa01cf426d38e27f42a012594c63023e18 (diff)
downloadchromium_src-ab8949ac2e50880bc8adb40080287ad89758d772.zip
chromium_src-ab8949ac2e50880bc8adb40080287ad89758d772.tar.gz
chromium_src-ab8949ac2e50880bc8adb40080287ad89758d772.tar.bz2
Re-enable the ConnectFailure case. Previously, this test case
reported valgrind warnings; the warnings are legit; we were leaking the sessions in this case through two different leaks BUG=29471 TEST=SpdyNetworkTransactionTest.ConnectFailure Review URL: http://codereview.chromium.org/1553005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@42995 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/spdy')
-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() {