| 1 | # HG changeset patch
|
|---|
| 2 | # User Roman Arutyunyan <arut@nginx.com>
|
|---|
| 3 | # Date 1669195987 -14400
|
|---|
| 4 | # Wed Nov 23 13:33:07 2022 +0400
|
|---|
| 5 | # Branch quic
|
|---|
| 6 | # Node ID 93fbae5d47089bfebfee1d059497f9576c5371da
|
|---|
| 7 | # Parent 6cf8ed15fd00668b7efa0226c06f47d7238f26e8
|
|---|
| 8 | Fixed triggering stream read event (ticket #2409).
|
|---|
| 9 |
|
|---|
| 10 | If a client packet carrying stream data frame is not acked due to packet loss,
|
|---|
| 11 | the stream data is retransmitted later by client. It's also possible that the
|
|---|
| 12 | retransmitted range is bigger than before due to more stream data being
|
|---|
| 13 | available by then. If the original data was read out by the application,
|
|---|
| 14 | there would be no read event triggered by the retransmitted frame, even though
|
|---|
| 15 | it contains new data.
|
|---|
| 16 |
|
|---|
| 17 | diff --git a/src/event/quic/ngx_event_quic_streams.c b/src/event/quic/ngx_event_quic_streams.c
|
|---|
| 18 | --- a/src/event/quic/ngx_event_quic_streams.c
|
|---|
| 19 | +++ b/src/event/quic/ngx_event_quic_streams.c
|
|---|
| 20 | @@ -1147,7 +1147,7 @@ ngx_quic_handle_stream_frame(ngx_connect
|
|---|
| 21 | return ngx_quic_close_stream(qs);
|
|---|
| 22 | }
|
|---|
| 23 |
|
|---|
| 24 | - if (f->offset == qs->recv_offset) {
|
|---|
| 25 | + if (f->offset <= qs->recv_offset) {
|
|---|
| 26 | ngx_quic_set_event(qs->connection->read);
|
|---|
| 27 | }
|
|---|
| 28 |
|
|---|