f978999d6a
Motivation: Previously local settings is applied on its transmission. But this makes settings value out-of-sync with remote endpoint. The application of local settings must be done after the remote endpoint sends back its SETTINGS ACK. This synchronization is vital to the protocol. Suppose that server sends SETTINGS_HEADER_TABLE_SIZE 0 on connection establishment and resizes its header table size down to 0. Meanwhile, client sends HEADERS which has header block encoded in default 4096 header table size, because client has not seen the SETTINGS from server. Server tries to decode received HEADERS but due to the difference of header table size, decoding process may fail. Modifications: We don't apply settings on transmission. Instead, we keep track of outstanding settings in FIFO queue. When we get ACK, we pop oldest outstanding settings and apply its values. Result: The outstanding settings values are applied when its ACK is received, which is compliant behavior to the HTTP/2 specification. |
||
---|---|---|
.. | ||
src | ||
pom.xml |