| Index: net/quic/quic_packet_creator.cc
|
| diff --git a/net/quic/quic_packet_creator.cc b/net/quic/quic_packet_creator.cc
|
| index 3d6b7948d2c9c7d6ff7e2fffce845142b88e83ff..6fcc9012824675b79777c090773df8adb4b63615 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];
|
|
|