diff options
author | mbelshe@chromium.org <mbelshe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-29 21:16:54 +0000 |
---|---|---|
committer | mbelshe@chromium.org <mbelshe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-29 21:16:54 +0000 |
commit | ab8949ac2e50880bc8adb40080287ad89758d772 (patch) | |
tree | fce9e0fe875b3c072c80e39f28da63f4bd727696 /net/spdy | |
parent | 2b6417aa01cf426d38e27f42a012594c63023e18 (diff) | |
download | chromium_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.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() { |