Index: net/quic/core/quic_config.cc |
diff --git a/net/quic/core/quic_config.cc b/net/quic/core/quic_config.cc |
index 5a3bccbd90d2350fad5b4f509d6ddeae5c144e6f..05a21747295cbef94a82cee797da8621ed839d99 100644 |
--- a/net/quic/core/quic_config.cc |
+++ b/net/quic/core/quic_config.cc |
@@ -10,6 +10,7 @@ |
#include "net/quic/core/crypto/crypto_handshake_message.h" |
#include "net/quic/core/crypto/crypto_protocol.h" |
#include "net/quic/core/quic_bug_tracker.h" |
+#include "net/quic/core/quic_flags.h" |
#include "net/quic/core/quic_socket_address_coder.h" |
#include "net/quic/core/quic_utils.h" |
@@ -423,7 +424,8 @@ QuicConfig::QuicConfig() |
multipath_enabled_(kMPTH, PRESENCE_OPTIONAL), |
connection_migration_disabled_(kNCMR, PRESENCE_OPTIONAL), |
alternate_server_address_(kASAD, PRESENCE_OPTIONAL), |
- force_hol_blocking_(kFHL2, PRESENCE_OPTIONAL) { |
+ force_hol_blocking_(kFHL2, PRESENCE_OPTIONAL), |
+ support_max_header_list_size_(kSMHL, PRESENCE_OPTIONAL) { |
SetDefaults(); |
} |
@@ -661,6 +663,14 @@ bool QuicConfig::ForceHolBlocking(Perspective perspective) const { |
} |
} |
+void QuicConfig::SetSupportMaxHeaderListSize() { |
+ support_max_header_list_size_.SetSendValue(1); |
+} |
+ |
+bool QuicConfig::SupportMaxHeaderListSize() const { |
+ return support_max_header_list_size_.HasReceivedValue(); |
+} |
+ |
bool QuicConfig::negotiated() const { |
// TODO(ianswett): Add the negotiated parameters once and iterate over all |
// of them in negotiated, ToHandshakeMessage, ProcessClientHello, and |
@@ -684,6 +694,9 @@ void QuicConfig::SetDefaults() { |
SetInitialStreamFlowControlWindowToSend(kMinimumFlowControlSendWindow); |
SetInitialSessionFlowControlWindowToSend(kMinimumFlowControlSendWindow); |
+ if (FLAGS_quic_send_max_header_list_size) { |
+ SetSupportMaxHeaderListSize(); |
+ } |
} |
void QuicConfig::ToHandshakeMessage(CryptoHandshakeMessage* out) const { |
@@ -700,6 +713,7 @@ void QuicConfig::ToHandshakeMessage(CryptoHandshakeMessage* out) const { |
connection_options_.ToHandshakeMessage(out); |
alternate_server_address_.ToHandshakeMessage(out); |
force_hol_blocking_.ToHandshakeMessage(out); |
+ support_max_header_list_size_.ToHandshakeMessage(out); |
} |
QuicErrorCode QuicConfig::ProcessPeerHello( |
@@ -761,6 +775,10 @@ QuicErrorCode QuicConfig::ProcessPeerHello( |
error = force_hol_blocking_.ProcessPeerHello(peer_hello, hello_type, |
error_details); |
} |
+ if (error == QUIC_NO_ERROR) { |
+ error = support_max_header_list_size_.ProcessPeerHello( |
+ peer_hello, hello_type, error_details); |
+ } |
return error; |
} |