mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-01-14 13:21:00 +01:00
This commit is a direct follow-up on the major rearchitecture of send buffering. This patch implements the proper handling of connection pool buffer temporary exhaustion. The first step is to be able to differentiate a fatal allocation error from a temporary pool exhaustion. This is done via a new output argument on qcc_get_stream_txbuf(). For a fatal error, application protocol layer will schedule the immediate connection closing. For a pool exhaustion, QCC is flagged with QC_CF_CONN_FULL and stream sending process is interrupted. QCS instance is also registered in a new list <qcc.buf_wait_list>. A new connection buffer can become available when all ACKs are received for an older buffer. This process is taken in charge by quic-conn layer. It uses qcc_notify_buf() function to clear QC_CF_CONN_FULL and to wake up every streams registered on buf_wait_list to resume sending process.