Index: net/quic/core/quic_packet_creator.h |
diff --git a/net/quic/core/quic_packet_creator.h b/net/quic/core/quic_packet_creator.h |
index 68b70d42ff42370e08288bcf3bd90c05bc49039b..33b81d25f2ba368ca8067637c44e97cdd0d698a1 100644 |
--- a/net/quic/core/quic_packet_creator.h |
+++ b/net/quic/core/quic_packet_creator.h |
@@ -202,6 +202,10 @@ class QUIC_EXPORT_PRIVATE QuicPacketCreator { |
// Sets the maximum packet length. |
void SetMaxPacketLength(QuicByteCount length); |
+ // Increases pending_padding_bytes by |size|. Pending padding will be sent by |
+ // MaybeAddPadding(). |
+ void AddPendingPadding(QuicByteCount size); |
+ |
void set_debug_delegate(DebugDelegate* debug_delegate) { |
debug_delegate_ = debug_delegate; |
} |
@@ -210,6 +214,8 @@ class QUIC_EXPORT_PRIVATE QuicPacketCreator { |
return latched_flag_no_stop_waiting_frames_; |
} |
+ QuicByteCount pending_padding_bytes() const { return pending_padding_bytes_; } |
+ |
private: |
friend class test::QuicPacketCreatorPeer; |
@@ -242,9 +248,8 @@ class QUIC_EXPORT_PRIVATE QuicPacketCreator { |
// saves the |frame| in the next SerializedPacket. |
bool AddFrame(const QuicFrame& frame, bool save_retransmittable_frames); |
- // Adds a padding frame to the current packet only if the current packet |
- // contains a handshake message, and there is sufficient room to fit a |
- // padding frame. |
+ // Adds a padding frame to the current packet (if there is space) when (1) |
+ // current packet needs full padding or (2) there are pending paddings. |
void MaybeAddPadding(); |
// Serializes all frames which have been added and adds any which should be |
@@ -303,6 +308,16 @@ class QUIC_EXPORT_PRIVATE QuicPacketCreator { |
// The latched value of FLAGS_quic_reloadable_flag_quic_no_stop_waiting_frames |
bool latched_flag_no_stop_waiting_frames_; |
+ // Pending padding bytes to send. Pending padding bytes will be sent in next |
+ // packet(s) (after all other frames) if current constructed packet does not |
+ // have room to send all of them. |
+ QuicByteCount pending_padding_bytes_; |
+ |
+ // Indicates whether current constructed packet needs full padding to max |
+ // packet size. Please note, full padding does not consume pending padding |
+ // bytes. |
+ bool needs_full_padding_; |
+ |
DISALLOW_COPY_AND_ASSIGN(QuicPacketCreator); |
}; |