Change Settings frame's setting id from 2 byte integer to variable length
integer.
gfe-relnote: n/a --under version 99, which is not turned on.
PiperOrigin-RevId: 244771758
Change-Id: I0e1b329ff0696255f5ca0c10087bf39090b81e76
diff --git a/quic/core/http/http_decoder.cc b/quic/core/http/http_decoder.cc
index eff9efc..e0c7383 100644
--- a/quic/core/http/http_decoder.cc
+++ b/quic/core/http/http_decoder.cc
@@ -308,10 +308,6 @@
break;
}
case 0x4: { // SETTINGS
- // TODO(rch): Handle overly large SETTINGS frames. Either:
- // 1. Impose a limit on SETTINGS frame size, and close the connection if
- // exceeded
- // 2. Implement a streaming parsing mode.
SettingsFrame frame;
QuicDataReader reader(buffer_.data(), current_frame_length_);
if (!ParseSettingsFrame(&reader, &frame)) {
@@ -480,8 +476,8 @@
bool HttpDecoder::ParseSettingsFrame(QuicDataReader* reader,
SettingsFrame* frame) {
while (!reader->IsDoneReading()) {
- uint16_t id;
- if (!reader->ReadUInt16(&id)) {
+ uint64_t id;
+ if (!reader->ReadVarInt62(&id)) {
RaiseError(QUIC_INTERNAL_ERROR,
"Unable to read settings frame identifier");
return false;