BUG/MINOR: h2: immediately close if receiving GOAWAY after the last stream

The h2spec test suite reveals that a GOAWAY frame received after the
last stream doesn't cause an immediate close, because we count on the
last stream to quit to do so. By simply setting the last_sid to the
received value in case it was not set, we can ensure to properly close
an idle connection during h2_wake().

To be backported to 1.8.
This commit is contained in:
Willy Tarreau 2017-12-03 10:27:47 +01:00
parent 811ad12414
commit 11cc2d6031

View File

@ -1399,6 +1399,8 @@ static int h2c_handle_goaway(struct h2c *h2c)
last = h2_get_n32(h2c->dbuf, 0);
h2c->errcode = h2_get_n32(h2c->dbuf, 4);
h2_wake_some_streams(h2c, last, CS_FL_ERROR);
if (h2c->last_sid < 0)
h2c->last_sid = last;
return 1;
conn_err: