MINOR: mux-h2: make HTX_BLK_EOM processing idempotent

We want to make sure we won't emit another empty DATA frame if we meet
HTX_BLK_EOM after and end of stream was already sent. For now it cannot
happen as far as HTX is respected, but with trailers it may become
ambiguous.
This commit is contained in:
Willy Tarreau 2019-01-04 09:28:17 +01:00
parent 6195237040
commit 7eeb10a5b5
1 changed files with 10 additions and 2 deletions

View File

@ -4563,8 +4563,16 @@ static size_t h2s_htx_frt_make_resp_data(struct h2s *h2s, struct buffer *buf, si
count--;
goto end;
}
if (type != HTX_BLK_DATA && type != HTX_BLK_EOM)
else if (type == HTX_BLK_EOM) {
if (h2s->flags & H2_SF_ES_SENT) {
/* ES already sent */
htx_remove_blk(htx, blk);
total++; // EOM counts as one byte
count--;
goto end;
}
}
else if (type != HTX_BLK_DATA)
goto end;
/* Perform some optimizations to reduce the number of buffer copies.