mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-01-20 04:30:46 +00:00
BUG/MEDIUM: stconn: Set fsb date if zero-copy forwarding is blocked during nego
During the zero-copy forwarding, if the consumer side reports it is blocked, it means it is blocked on send. At the stream-connector level, the event must be reported to be sure to set/update the fsb date. Otherwise, write timeouts cannot be properly reported. If this happens when no other timeout is armed, this freezes the stream. This patch must be backported to 2.9.
This commit is contained in:
parent
7eb7ae2835
commit
7cc4151422
@ -518,11 +518,15 @@ static inline size_t se_nego_ff(struct sedesc *se, struct buffer *input, size_t
|
||||
}
|
||||
|
||||
ret = mux->nego_fastfwd(se->sc, input, count, may_splice);
|
||||
if ((se->iobuf.flags & IOBUF_FL_FF_BLOCKED) && !(se->sc->wait_event.events & SUB_RETRY_SEND)) {
|
||||
/* The SC must be subs for send to be notify when some
|
||||
* space is made
|
||||
*/
|
||||
mux->subscribe(se->sc, SUB_RETRY_SEND, &se->sc->wait_event);
|
||||
if (se->iobuf.flags & IOBUF_FL_FF_BLOCKED) {
|
||||
sc_ep_report_blocked_send(se->sc, 0);
|
||||
|
||||
if (!(se->sc->wait_event.events & SUB_RETRY_SEND)) {
|
||||
/* The SC must be subs for send to be notify when some
|
||||
* space is made
|
||||
*/
|
||||
mux->subscribe(se->sc, SUB_RETRY_SEND, &se->sc->wait_event);
|
||||
}
|
||||
}
|
||||
goto end;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user