http2: asymetric sizes for headers tables

The headers table from client to server
and the one from server to client
may have different maximum sizes
(even if both endpoints have to keep both tables)
pull/4941/head
Philippe Antoine 6 years ago committed by Jason Ish
parent 4706b38866
commit 1fd6f5bc61

@ -466,17 +466,19 @@ impl HTTP2State {
Ok((_, set)) => { Ok((_, set)) => {
for i in 0..set.len() { for i in 0..set.len() {
if set[i].id == parser::HTTP2SettingsId::SETTINGSHEADERTABLESIZE { if set[i].id == parser::HTTP2SettingsId::SETTINGSHEADERTABLESIZE {
//set for both endpoints ? to be tested //reverse order as this is what we accept from the other endpoint
self.dynamic_headers_tc.max_size = set[i].value as usize; let dyn_headers = if dir == STREAM_TOCLIENT {
self.dynamic_headers_ts.max_size = set[i].value as usize; &mut self.dynamic_headers_ts
} else {
&mut self.dynamic_headers_tc
};
dyn_headers.max_size = set[i].value as usize;
if set[i].value > HTTP2_MAX_TABLESIZE { if set[i].value > HTTP2_MAX_TABLESIZE {
//mark potential overflow //mark potential overflow
self.dynamic_headers_tc.overflow = 1; dyn_headers.overflow = 1;
self.dynamic_headers_ts.overflow = 1;
} else { } else {
//reset in case peer set a lower value, to be tested //reset in case peer set a lower value, to be tested
self.dynamic_headers_tc.overflow = 0; dyn_headers.overflow = 0;
self.dynamic_headers_ts.overflow = 0;
} }
} }
} }

Loading…
Cancel
Save