Index: net/quic/quic_config.h |
diff --git a/net/quic/quic_config.h b/net/quic/quic_config.h |
index 88ad8b6a91c602d7e5a4e6058d74269a2c4bb5c9..4d65097bc85aadfae93c28bf541a7d97aae23a80 100644 |
--- a/net/quic/quic_config.h |
+++ b/net/quic/quic_config.h |
@@ -215,6 +215,42 @@ class NET_EXPORT_PRIVATE QuicFixedTag : public QuicConfigValue { |
bool has_receive_value_; |
}; |
+// Stores tag from CHLO or SHLO messages that are not negotiated. |
+class NET_EXPORT_PRIVATE QuicFixedTagVector : public QuicConfigValue { |
+ public: |
+ QuicFixedTagVector(QuicTag name, QuicConfigPresence presence); |
+ virtual ~QuicFixedTagVector(); |
+ |
+ bool HasSendValues() const; |
+ |
+ QuicTagVector GetSendValues() const; |
+ |
+ void SetSendValues(const QuicTagVector& values); |
+ |
+ bool HasReceivedValues() const; |
+ |
+ QuicTagVector GetReceivedValues() const; |
+ |
+ void SetReceivedValues(const QuicTagVector& values); |
+ |
+ // If has_send_value is true, serialises |tag_vector_| and |send_value_| to |
+ // |out|. |
+ virtual void ToHandshakeMessage(CryptoHandshakeMessage* out) const OVERRIDE; |
+ |
+ // Sets |receive_values_| to the corresponding value from |client_hello_| if |
+ // it exists. |
+ virtual QuicErrorCode ProcessPeerHello( |
+ const CryptoHandshakeMessage& peer_hello, |
+ HelloType hello_type, |
+ std::string* error_details) OVERRIDE; |
+ |
+ private: |
+ QuicTagVector send_values_; |
+ bool has_send_values_; |
+ QuicTagVector receive_values_; |
+ bool has_receive_values_; |
+}; |
+ |
// QuicConfig contains non-crypto configuration options that are negotiated in |
// the crypto handshake. |
class NET_EXPORT_PRIVATE QuicConfig { |
@@ -222,10 +258,16 @@ class NET_EXPORT_PRIVATE QuicConfig { |
QuicConfig(); |
~QuicConfig(); |
- void set_congestion_control(const QuicTagVector& congestion_control, |
- QuicTag default_congestion_control); |
+ void set_congestion_feedback(const QuicTagVector& congestion_feedback, |
+ QuicTag default_congestion_feedback); |
+ |
+ QuicTag congestion_feedback() const; |
+ |
+ void SetCongestionOptionsToSend(const QuicTagVector& congestion_options); |
+ |
+ bool HasReceivedCongestionOptions() const; |
- QuicTag congestion_control() const; |
+ QuicTagVector ReceivedCongestionOptions() const; |
void SetLossDetectionToSend(QuicTag loss_detection); |
@@ -294,7 +336,9 @@ class NET_EXPORT_PRIVATE QuicConfig { |
friend class test::QuicConfigPeer; |
// Congestion control feedback type. |
- QuicNegotiableTag congestion_control_; |
+ QuicNegotiableTag congestion_feedback_; |
+ // Congestion control option. |
+ QuicFixedTagVector congestion_options_; |
// Loss detection feedback type. |
QuicFixedTag loss_detection_; |
// Idle connection state lifetime |