diff options
author | rtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-14 08:35:32 +0000 |
---|---|---|
committer | rtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-14 08:35:32 +0000 |
commit | 752fbe58252e7b3b04a1829bda113d40ac7d5a85 (patch) | |
tree | 359f1b8ff8cf6da3d7aefb9d986b1e927d2b3d2f /net/quic/quic_packet_generator.h | |
parent | 8ca44cce6bdb188dc0d7406302bf4d54e4e55b8b (diff) | |
download | chromium_src-752fbe58252e7b3b04a1829bda113d40ac7d5a85.zip chromium_src-752fbe58252e7b3b04a1829bda113d40ac7d5a85.tar.gz chromium_src-752fbe58252e7b3b04a1829bda113d40ac7d5a85.tar.bz2 |
Land Recent QUIC changes.
Add an explicit FlushAllQueuedFrames method to QuicPacketGenerator. This
differs from FinishBatchOperations in that it flushes *all* queued frames,
even those which might not be currently sendable.
This is necessary to ensure that crypto messages go out in their own
packets, regardless of the current writability of the socket.
Fixes a bug in which crypto messages might not be sent in dedicated
packets.
Merge internal change: 54521255
Fixes to make the following reverted QUIC CL's to work.
https://codereview.chromium.org/26385004/
https://codereview.chromium.org/26739002/
- Changed "DCHECK(retransmission_alarm_->IsSet())" to if
retransmission_alarm_->IsSet() then cancel the alarm.
- Added call to OnPacketSent from QuicConnectionHelper::OnWriteComplete.
- If QUIC version from client or server is version 10 and the other side
supports version 11, then only set Encrypter/Decryter.
- Disabled QuiConnectionHelper's WritePacketToWireAsync. Will be
rewriting this code in the next merge CL.
Remove unused IsWriteBlocked method from QuicConnectionHelperInterface.
Merge internal change: 53803217
Add missing QUIC_VERSION_Q011 case in QuicVersionToString.
Merge internal change: 53749976
QUIC: don't ignore SetKey and SetNoncePrefix return values.
This change causes failures to set the AES-GCM key and nonce to bubble
up and kill the connection. I don't think that we've had any failures,
but you never know and it would be bad to, say, start transmitting
plaintext or something because we didn't notice that we failed to set
a key.
(The OpenSSL AEAD API doesn't actually let that happen: it zeros the
output buffer on any failure, but things might change in the future.)
(This is a follow up from a previous CL which altered our AES-128-GCM
implementation.)
Merge internal change: 53742674
Reduce the length of the QUIC null encryption auth hash from 16 bytes to 12
bytes to match the length of the AES auth hash.
Merge internal change: 53693995
Addressing comments in Jana's review of cr/52231261.
Merge internal change: 53582401
QUIC: disable P-256 support on the server.
The P-256 key generation is done with OpenSSL, which doesn't use the
QuicRandom passed to DefaultConfig(). This is causing the generated
server configs to be non-deterministic and breaking 0-RTT handshakes.
Merge internal change: 53501783
Fix an LOG to use the correct condition in QuicReceivedPacketManager and
change it to a DFATAL so in the future tests will prevent re-occurrence.
Merge internal change: 53483753
Cleanup: Rename OnIncomingAck to OnPacketAcked, and remove unneeeded argument
from SentPacketManager::OnIncomingAck.
Merge internal change: 53483155
Fix a bug in QuicConnection/QuicConnectionHelper if the helper buffered the
write (as is the case in chrome). In this case, the sent packet was not
accounted for properly.
Merge internal change: 53462749
Refactor to change WritePacket to return a WriteResult struct.
Merge internal change: 53382221
Fixing a bug where the version negotiation packet would get dropped on the
floor if the socket was write blocked at the time it was sent. The packet is
now queued.
Merge internal change: 53317846
Create a new QUIC_INVALID_CHANNEL_ID_SIGNATURE error to replace a usage of
QUIC_INTERNAL_ERROR.
Merge internal change: 53277933
Added a todo to merge internal CL 53267501 when chromium's version of OpenSSL
has latest AEAD code.
Didn't merge internal change: 53267501
R=rch@chromium.org
Review URL: https://codereview.chromium.org/26930003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@228438 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/quic/quic_packet_generator.h')
-rw-r--r-- | net/quic/quic_packet_generator.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/net/quic/quic_packet_generator.h b/net/quic/quic_packet_generator.h index e1ea1e8..7bd880e 100644 --- a/net/quic/quic_packet_generator.h +++ b/net/quic/quic_packet_generator.h @@ -115,9 +115,12 @@ class NET_EXPORT_PRIVATE QuicPacketGenerator { bool InBatchMode(); // Disables flushing. void StartBatchOperations(); - // Enables flushing and flushes queued data. + // Enables flushing and flushes queued data which can be sent. void FinishBatchOperations(); + // Flushes all queued frames, even frames which are not sendable. + void FlushAllQueuedFrames(); + bool HasQueuedFrames() const; void set_debug_delegate(DebugDelegateInterface* debug_delegate) { @@ -125,7 +128,7 @@ class NET_EXPORT_PRIVATE QuicPacketGenerator { } private: - void SendQueuedFrames(); + void SendQueuedFrames(bool flush); // Test to see if we have pending ack, feedback, or control frames. bool HasPendingFrames() const; |