diff options
author | rch@chromium.org <rch@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-11 08:49:07 +0000 |
---|---|---|
committer | rch@chromium.org <rch@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-11 08:49:07 +0000 |
commit | cff7b7b50c63dc3b03cc49e6c0ba999d5e51da4a (patch) | |
tree | 817949bdc92f9d7cc758c0abe1de78dd7aecbe9e /net/quic/test_tools | |
parent | 3bae1d223e934227c005e2923413ca6499c4e481 (diff) | |
download | chromium_src-cff7b7b50c63dc3b03cc49e6c0ba999d5e51da4a.zip chromium_src-cff7b7b50c63dc3b03cc49e6c0ba999d5e51da4a.tar.gz chromium_src-cff7b7b50c63dc3b03cc49e6c0ba999d5e51da4a.tar.bz2 |
Handling partial writes and fin-only writes in QUIC.
This handles an API problem for sending a fin with no associated data.
This can happen at the GFE if we're dechunking HTTP, have
sent all bytes read from a backend, and then we get a 0 byte terminal chunk.
In this case, we have no way of telling when we write data if the fin was
consumed, or if the write was blocked at an underlying layer and the end of
data would otherwise never be communicated to the peer.
Merge internal change: 40340063
Review URL: https://chromiumcodereview.appspot.com/11820003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@176287 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/quic/test_tools')
-rw-r--r-- | net/quic/test_tools/quic_test_utils.cc | 5 | ||||
-rw-r--r-- | net/quic/test_tools/quic_test_utils.h | 5 |
2 files changed, 7 insertions, 3 deletions
diff --git a/net/quic/test_tools/quic_test_utils.cc b/net/quic/test_tools/quic_test_utils.cc index f6f4766..bb509f8 100644 --- a/net/quic/test_tools/quic_test_utils.cc +++ b/net/quic/test_tools/quic_test_utils.cc @@ -9,13 +9,14 @@ using std::max; using std::min; using std::string; +using testing::_; namespace net { namespace test { MockFramerVisitor::MockFramerVisitor() { // By default, we want to accept packets. - ON_CALL(*this, OnPacketHeader(testing::_)) + ON_CALL(*this, OnPacketHeader(_)) .WillByDefault(testing::Return(true)); } @@ -101,6 +102,8 @@ bool PacketSavingConnection::SendPacket(QuicPacketSequenceNumber number, MockSession::MockSession(QuicConnection* connection, bool is_server) : QuicSession(connection, is_server) { + ON_CALL(*this, WriteData(_, _, _, _)) + .WillByDefault(testing::Return(QuicConsumedData(0, false))); } MockSession::~MockSession() { diff --git a/net/quic/test_tools/quic_test_utils.h b/net/quic/test_tools/quic_test_utils.h index 89d7103..544543a 100644 --- a/net/quic/test_tools/quic_test_utils.h +++ b/net/quic/test_tools/quic_test_utils.h @@ -199,8 +199,9 @@ class MockSession : public QuicSession { MOCK_METHOD0(CreateOutgoingReliableStream, ReliableQuicStream*()); MOCK_METHOD3(WriteData, void(QuicStreamId id, base::StringPiece data, bool fin)); - MOCK_METHOD4(WriteData, int(QuicStreamId id, base::StringPiece data, - QuicStreamOffset offset, bool fin)); + MOCK_METHOD4(WriteData, QuicConsumedData(QuicStreamId id, + base::StringPiece data, + QuicStreamOffset offset, bool fin)); MOCK_METHOD0(IsHandshakeComplete, bool()); private: |