summaryrefslogtreecommitdiffstats
path: root/net/quic/quic_packet_creator.cc
diff options
context:
space:
mode:
authorrch <rch@chromium.org>2015-03-29 00:04:40 -0700
committerCommit bot <commit-bot@chromium.org>2015-03-29 07:05:29 +0000
commit1e543ecc66c65c9ba74d7d879fe7822da68f6686 (patch)
tree26bb284039e93c455fea796bc86c08ef2a32865e /net/quic/quic_packet_creator.cc
parentb6c8f16ad47aa0183e190951e6fcd3636f39d12d (diff)
downloadchromium_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.cc31
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];