mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-22 12:30:07 +00:00
BUG/MINOR: quic: fix race condition on datagram purging
Each datagram is received by a random thread and dispatch to its
destination thread linked to the connection. Then, the datagram is
handled by the connection thread. Once this is done, datagram buffer
pointer is atomically set to NULL to mark it as consumed.
Consumed datagrams are purged before recvfrom() invocation on random
receiver threads. The check for NULL buffer must thus be done
atomically. This was not the case before this patch, which may have
triggered race conditions.
This bug has been introduced by commit
91b2305ad7
MINOR: quic: implement datagram cleanup for quic_receiver_buf
This should be backported up to 2.6 after previously mentionned commit.
This commit is contained in:
parent
735b44f5df
commit
0b13e94071
@ -223,7 +223,7 @@ static struct quic_dgram *quic_rxbuf_purge_dgrams(struct quic_receiver_buf *buf)
|
||||
cur = LIST_ELEM(buf->dgram_list.n, struct quic_dgram *, recv_list);
|
||||
|
||||
/* Loop until a not yet consumed datagram is found. */
|
||||
if (cur->buf)
|
||||
if (HA_ATOMIC_LOAD(&cur->buf))
|
||||
break;
|
||||
|
||||
/* Clear buffer of current unused datagram. */
|
||||
|
Loading…
Reference in New Issue
Block a user