summaryrefslogtreecommitdiffstats
path: root/net/quic/quic_packet_generator.h
diff options
context:
space:
mode:
authorrtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-14 08:35:32 +0000
committerrtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-14 08:35:32 +0000
commit752fbe58252e7b3b04a1829bda113d40ac7d5a85 (patch)
tree359f1b8ff8cf6da3d7aefb9d986b1e927d2b3d2f /net/quic/quic_packet_generator.h
parent8ca44cce6bdb188dc0d7406302bf4d54e4e55b8b (diff)
downloadchromium_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.h7
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;