From ce7bb141d5359dfe1224a85bafa802a09f1e683d Mon Sep 17 00:00:00 2001 From: "rtenneti@chromium.org" Date: Sat, 17 May 2014 15:51:33 +0000 Subject: Land Recent QUIC Changes. Stub for BBRv2, based on TCP congestion feedback frames. Merge internal change: 67154078 https://codereview.chromium.org/283333008/ Update QuicSentPacketManager to sample a new recent min rtt within the first 2 rtt samples after quiescence. Merge internal change: 67149500 https://codereview.chromium.org/286143007/ Change the test QUIC stream id to be the first non reserved stream ID (and also to use the right typedef). Merge internal change: 67146383 https://codereview.chromium.org/292453003/ Adds dynamic FEC on/off switch in packet creator. Tightens use of max_packets_per_fec_group through use of a setter method across the QUIC code. FEC operations are now decided based on should_fec_protect_, which is expected to be a dynamic on/off control in the packet creator, instead of max_packets_per_fec_group. Adds dynamic FEC on/off switch in packet_creator. Merge internal change: 67144415 https://codereview.chromium.org/286153003/ Minor cleanup to simplify QuicSentPacketManager's OnPacketSent and always reset the retransmission alarm anytime a new pending packet is sent. Always setting the retransmission alarm is only a simplification of the approach, and not intended to fix any issues. Merge internal change: 67143274 https://codereview.chromium.org/288333002/ Don't set QUIC's write alarm if we are connection flow control blocked. Added QUIC_VERSION_19 to kSupportedQuicVersions. Merge internal change: 67141668 https://codereview.chromium.org/285193006/ Minor cleanup of QuicUnackedPacketMap to simplify the implementation of HasPendingPackets and move a test only method, GetNumRetransmittablePackets, into QuicSentPacketManagerPeer. Merge internal change: 67123054 https://codereview.chromium.org/282323003/ Fix a QUIC bug where a crypto packet was never removed from the UnackedPacketMap if it was not acked and spuriously retransmitted at least twice. Merge internal change: 67050631 https://codereview.chromium.org/284273002/ Refactor: move flow controller from QuicConnection to QuicSession. No behavior change intended. Merge internal change: 67036889 https://codereview.chromium.org/286213002/ Fix a QUIC bug where a packet could remain in the UnackedPacketMap indefinitely. This can cause a memory leak when tracking entropy. Merge internal change: 67028206 https://codereview.chromium.org/285233006/ Delete dead code used only in tests. Merge internal change: 66938996 https://codereview.chromium.org/288303002/ Add handling + parsing for ALTSVC frame. Also change frame type number and add an extra version check for BLOCKED frame. SPDY4/HTTP2 only. Merge internal change: 66925490 https://codereview.chromium.org/286173002/ QUIC loadtest fixes: - Wait for the QUIC handshake to complete before saying that the QuicTestClient is connected. - Force connect at client creation time when talking HTTP/HTTPS/SPDY for consistency. Merge internal change: 66855236 https://codereview.chromium.org/282153004/ QUIC now respects configured SPDY stream limits. Merge internal change: 66831620 https://codereview.chromium.org/286113004/ R=rch@chromium.org Review URL: https://codereview.chromium.org/288313003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@271211 0039d316-1c4b-4281-b951-d872f2087c98 --- net/quic/quic_session.h | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'net/quic/quic_session.h') diff --git a/net/quic/quic_session.h b/net/quic/quic_session.h index 2bbd8ba..d23b684 100644 --- a/net/quic/quic_session.h +++ b/net/quic/quic_session.h @@ -25,6 +25,7 @@ namespace net { class QuicCryptoStream; +class QuicFlowController; class ReliableQuicStream; class SSLInfo; class VisitorShim; @@ -53,6 +54,7 @@ class NET_EXPORT_PRIVATE QuicSession : public QuicConnectionVisitorInterface { }; QuicSession(QuicConnection* connection, + uint32 max_flow_control_receive_window_bytes, const QuicConfig& config); virtual ~QuicSession(); @@ -69,9 +71,9 @@ class NET_EXPORT_PRIVATE QuicSession : public QuicConnectionVisitorInterface { virtual void OnConnectionClosed(QuicErrorCode error, bool from_peer) OVERRIDE; virtual void OnWriteBlocked() OVERRIDE {} virtual void OnSuccessfulVersionNegotiation( - const QuicVersion& version) OVERRIDE {} + const QuicVersion& version) OVERRIDE; virtual void OnCanWrite() OVERRIDE; - virtual bool HasPendingWrites() const OVERRIDE; + virtual bool WillingAndAbleToWrite() const OVERRIDE; virtual bool HasPendingHandshake() const OVERRIDE; virtual bool HasOpenDataStreams() const OVERRIDE; @@ -201,6 +203,12 @@ class NET_EXPORT_PRIVATE QuicSession : public QuicConnectionVisitorInterface { bool is_server() const { return connection_->is_server(); } + uint32 max_flow_control_receive_window_bytes() { + return max_flow_control_receive_window_bytes_; + } + + QuicFlowController* flow_controller() { return flow_controller_.get(); } + protected: typedef base::hash_map DataStreamMap; @@ -295,6 +303,12 @@ class NET_EXPORT_PRIVATE QuicSession : public QuicConnectionVisitorInterface { // Indicate if there is pending data for the crypto stream. bool has_pending_handshake_; + // Used for session level flow control. + scoped_ptr flow_controller_; + + // Initial flow control receive window size for new streams. + uint32 max_flow_control_receive_window_bytes_; + DISALLOW_COPY_AND_ASSIGN(QuicSession); }; -- cgit v1.1