mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-24 23:31:40 +02:00
BUG/MINOR: mux-quic: open stream on STOP_SENDING
Considered a stream as opened when receiving a STOP_SENDING frame as the first frame on the stream. This patch is tagged as BUG because a BUG_ON may occur if only a STOP_SENDING frame has been received for a frame. This will reset the stream in respect with RFC9000 but internally it is considered invalid transition to reset an idle stream. To fix this, simply use qcs_idle_open() on STOP_SENDING parsing function. This will mark the stream as OPEN before resetting it. This was detected on haproxy.org with the following backtrace : FATAL: bug condition "qcs->st == QC_SS_IDLE" matched at src/mux_quic.c:383 call trace(12): | 0x490dd3 [b8 01 00 00 00 c6 00 00]: main-0x1d0633 | 0x4975b8 [48 8b 85 58 ff ff ff 8b]: main-0x1c9e4e | 0x497df4 [48 8b 45 c8 48 89 c7 e8]: main-0x1c9612 | 0x49934c [48 8b 45 c8 48 89 c7 e8]: main-0x1c80ba | 0x6b3475 [48 8b 05 54 1b 3a 00 64]: run_tasks_from_lists+0x45d/0x8b2 | 0x6b4093 [29 c3 89 d8 89 45 d0 83]: process_runnable_tasks+0x7c9/0x824 | 0x660bde [8b 05 fc b3 4f 00 83 f8]: run_poll_loop+0x74/0x430 | 0x6611de [48 8b 05 7b a6 40 00 48]: main-0x228 | 0x7f66e4fb2ea5 [64 48 89 04 25 30 06 00]: libpthread:+0x7ea5 | 0x7f66e455ab0d [48 89 c7 e8 5b 72 fc ff]: libc:clone+0x6d/0x86 Stream states have been implemented in the current dev tree. Thus, this patch does not need to be backported.
This commit is contained in:
parent
c09ef0c5fc
commit
96ca1b7c39
@ -1069,6 +1069,8 @@ int qcc_recv_stop_sending(struct qcc *qcc, uint64_t id, uint64_t err)
|
||||
if (!qcs)
|
||||
goto out;
|
||||
|
||||
qcs_idle_open(qcs);
|
||||
|
||||
/* RFC 9000 3.5. Solicited State Transitions
|
||||
*
|
||||
* An endpoint that receives a STOP_SENDING frame
|
||||
|
Loading…
x
Reference in New Issue
Block a user