diff options
author | rch <rch@chromium.org> | 2015-03-29 00:04:40 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-03-29 07:05:29 +0000 |
commit | 1e543ecc66c65c9ba74d7d879fe7822da68f6686 (patch) | |
tree | 26bb284039e93c455fea796bc86c08ef2a32865e /net/quic/quic_packet_creator.cc | |
parent | b6c8f16ad47aa0183e190951e6fcd3636f39d12d (diff) | |
download | chromium_src-1e543ecc66c65c9ba74d7d879fe7822da68f6686.zip chromium_src-1e543ecc66c65c9ba74d7d879fe7822da68f6686.tar.gz chromium_src-1e543ecc66c65c9ba74d7d879fe7822da68f6686.tar.bz2 |
Land Recent QUIC Changes until 03/27/2015
Add comment for QuicFramer::AppendPacketHeader. Correct/improve DLOG output. Clean up problems found by clang_tidy.
Merge internal change: 89724433
https://codereview.chromium.org/1047493003/
Fixed header ordering, missing override/explicit keywords. Nothing to see here.
Merge internal change: 89622231
https://codereview.chromium.org/1047493002/
Always build a QuicSecureConfigUpdater at startup.
Merge internal change: 89604435
https://codereview.chromium.org/1047483002/
Remove the using_pacing argument from QuicSentPacketManager::SetFromConfig because it's always true.
Merge internal change: 89599305
https://codereview.chromium.org/1048493002/
Pass QuicCryptoServerConfig by pointer instead of reference.
QuicCryptoServerStream was storing const reference to the config, which
makes the interface bug-prone because it's not clear for the caller
that the config must outlive the stream.
Merge internal change: 89542072
https://codereview.chromium.org/1048483002/
Cache the value of GetMaxPlaintextSize in QuicPacketCreator. No functional change.
Saves 0.68% in GFE QUIC loadtests.
Merge internal change: 89532959
https://codereview.chromium.org/1046523002/
Remove thread race conditions in two tests. No change to production code.
Merge internal change: 89510581
https://codereview.chromium.org/1047453003/
Remove QuicFramer::encrypter, because it's a test-only method.
Merge internal change: 89499341
https://codereview.chromium.org/1046513002/
Review URL: https://codereview.chromium.org/1037403004
Cr-Commit-Position: refs/heads/master@{#322716}
Diffstat (limited to 'net/quic/quic_packet_creator.cc')
-rw-r--r-- | net/quic/quic_packet_creator.cc | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/net/quic/quic_packet_creator.cc b/net/quic/quic_packet_creator.cc index 3d6b794..6fcc901 100644 --- a/net/quic/quic_packet_creator.cc +++ b/net/quic/quic_packet_creator.cc @@ -76,12 +76,12 @@ QuicPacketCreator::QuicPacketCreator(QuicConnectionId connection_id, should_fec_protect_(false), fec_group_number_(0), send_version_in_packet_(framer->perspective() == Perspective::IS_CLIENT), - max_packet_length_(kDefaultMaxPacketSize), max_packets_per_fec_group_(kDefaultMaxPacketsPerFecGroup), connection_id_length_(PACKET_8BYTE_CONNECTION_ID), next_sequence_number_length_(PACKET_1BYTE_SEQUENCE_NUMBER), sequence_number_length_(next_sequence_number_length_), packet_size_(0) { + SetMaxPacketLength(kDefaultMaxPacketSize); framer_->set_fec_builder(this); } @@ -96,6 +96,19 @@ void QuicPacketCreator::OnBuiltFecProtectedPayload( } } +void QuicPacketCreator::SetEncrypter(EncryptionLevel level, + QuicEncrypter* encrypter) { + framer_->SetEncrypter(level, encrypter); + max_plaintext_size_ = framer_->GetMaxPlaintextSize(max_packet_length_); +} + +void QuicPacketCreator::SetMaxPacketLength(QuicByteCount length) { + // |max_packet_length_| should not be changed mid-packet or mid-FEC group. + DCHECK(fec_group_.get() == nullptr && queued_frames_.empty()); + max_packet_length_ = length; + max_plaintext_size_ = framer_->GetMaxPlaintextSize(max_packet_length_); +} + void QuicPacketCreator::set_max_packets_per_fec_group( size_t max_packets_per_fec_group) { max_packets_per_fec_group_ = max(kLowestMaxPacketsPerFecGroup, @@ -329,11 +342,9 @@ size_t QuicPacketCreator::ExpansionOnNewFrame() const { } size_t QuicPacketCreator::BytesFree() const { - const size_t max_plaintext_size = - framer_->GetMaxPlaintextSize(max_packet_length_); - DCHECK_GE(max_plaintext_size, PacketSize()); - return max_plaintext_size - min(max_plaintext_size, PacketSize() - + ExpansionOnNewFrame()); + DCHECK_GE(max_plaintext_size_, PacketSize()); + return max_plaintext_size_ - min(max_plaintext_size_, PacketSize() + + ExpansionOnNewFrame()); } size_t QuicPacketCreator::PacketSize() const { @@ -363,14 +374,12 @@ SerializedPacket QuicPacketCreator::SerializePacket() { MaybeAddPadding(); - size_t max_plaintext_size = - framer_->GetMaxPlaintextSize(max_packet_length_); - DCHECK_GE(max_plaintext_size, packet_size_); + DCHECK_GE(max_plaintext_size_, packet_size_); // ACK Frames will be truncated due to length only if they're the only frame - // in the packet, and if packet_size_ was set to max_plaintext_size. If + // in the packet, and if packet_size_ was set to max_plaintext_size_. If // truncation due to length occurred, then GetSerializedFrameLength will have // returned all bytes free. - bool possibly_truncated_by_length = packet_size_ == max_plaintext_size && + bool possibly_truncated_by_length = packet_size_ == max_plaintext_size_ && queued_frames_.size() == 1 && queued_frames_.back().type == ACK_FRAME; char buffer[kMaxPacketSize]; |