mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-03-07 03:48:46 +00:00
BUG/MINOR: mux-h2: make it possible to set the error code on an already closed stream
When sending RST_STREAM in response to a frame delivered on an already closed stream, we used not to be able to update the error code and deliver an RST_STREAM with a wrong code (e.g. H2_ERR_CANCEL). Let's always allow to update the code so that RST_STREAM is always sent with the appropriate error code (most often H2_ERR_STREAM_CLOSED). This should be backported to 1.9 and possibly to 1.8.
This commit is contained in:
parent
5b4eae33de
commit
175cebb38a
@ -616,12 +616,15 @@ static inline __maybe_unused void h2c_error(struct h2c *h2c, enum h2_err err)
|
||||
h2c->st0 = H2_CS_ERROR;
|
||||
}
|
||||
|
||||
/* marks an error on the stream */
|
||||
/* marks an error on the stream. It may also update an already closed stream
|
||||
* (e.g. to report an error after an RST was received).
|
||||
*/
|
||||
static inline __maybe_unused void h2s_error(struct h2s *h2s, enum h2_err err)
|
||||
{
|
||||
if (h2s->id && h2s->st < H2_SS_ERROR) {
|
||||
if (h2s->id && h2s->st != H2_SS_ERROR) {
|
||||
h2s->errcode = err;
|
||||
h2s->st = H2_SS_ERROR;
|
||||
if (h2s->st < H2_SS_ERROR)
|
||||
h2s->st = H2_SS_ERROR;
|
||||
if (h2s->cs)
|
||||
cs_set_error(h2s->cs);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user