BUG/MINOR: mux-h2: advertise a larger connection window size
By default H2 uses a 65535 bytes window for the connection, and changing it requires sending a WINDOW_UPDATE message. We only used to update the window when receiving data, thus never increasing it further. As reported by user klzgrad on the mailing list, this seriously limits the upload bitrate, and will have an even higher impact on the backend H2 connections to origin servers. There is no technical reason for keeping this window so low, so let's increase it to the maximum possible value (2G-1). We do this by pretending we've already received that many data minus the maximum data the client might already send (65535), so that an early WINDOW_UPDATE message is sent right after the SETTINGS frame. This should be backported to 1.8. This patch depends on previous patch "BUG/MINOR: mux-h2: refrain from muxing during the preface".
This commit is contained in:
parent
75a930affb
commit
dc572364c6
|
@ -203,6 +203,13 @@ DECLARE_STATIC_POOL(pool_head_h2c, "h2c", sizeof(struct h2c));
|
|||
/* the h2s stream pool */
|
||||
DECLARE_STATIC_POOL(pool_head_h2s, "h2s", sizeof(struct h2s));
|
||||
|
||||
/* The default connection window size is 65535, it may only be enlarged using
|
||||
* a WINDOW_UPDATE message. Since the window must never be larger than 2G-1,
|
||||
* we'll pretend we already received the difference between the two to send
|
||||
* an equivalent window update to enlarge it to 2G-1.
|
||||
*/
|
||||
#define H2_INITIAL_WINDOW_INCREMENT ((1U<<31)-1 - 65535)
|
||||
|
||||
/* a few settings from the global section */
|
||||
static int h2_settings_header_table_size = 4096; /* initial value */
|
||||
static int h2_settings_initial_window_size = 65535; /* initial value */
|
||||
|
@ -417,7 +424,7 @@ static int h2_init(struct connection *conn, struct proxy *prx)
|
|||
h2c->conn = conn;
|
||||
h2c->max_id = -1;
|
||||
h2c->errcode = H2_ERR_NO_ERROR;
|
||||
h2c->rcvd_c = 0;
|
||||
h2c->rcvd_c = H2_INITIAL_WINDOW_INCREMENT;
|
||||
h2c->rcvd_s = 0;
|
||||
h2c->nb_streams = 0;
|
||||
h2c->nb_cs = 0;
|
||||
|
|
Loading…
Reference in New Issue