mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-16 16:34:42 +00:00
BUG/MEDIUM: process_stream(): Don't wake the task if no new data was received.
At the eand of process_stream(), we wake the task if there's something in the input buffer, after attempting a recv. However this is wrong, and we should only do so if we received new data. Just check the CF_READ_PARTIAL flag. This is 1.9-specific and should not be backported.
This commit is contained in:
parent
61d322fa9e
commit
d48d6d284e
@ -2504,13 +2504,13 @@ struct task *process_stream(struct task *t, void *context, unsigned short state)
|
||||
if (cs && !(cs->conn->flags & CO_FL_ERROR)) {
|
||||
ret |= si_cs_send(cs);
|
||||
si_cs_recv(cs);
|
||||
ret |= (ci_data(si_ic(si_f)) != 0 ) | (cs->conn->flags & CO_FL_ERROR);
|
||||
ret |= (si_ic(si_f)->flags & CF_READ_PARTIAL) | (cs->conn->flags & CO_FL_ERROR);
|
||||
}
|
||||
cs = objt_cs(si_b->end);
|
||||
if (cs && !(cs->conn->flags & CO_FL_ERROR)) {
|
||||
ret |= si_cs_send(cs);
|
||||
si_cs_recv(cs);
|
||||
ret |= (ci_data(si_ic(si_b)) != 0 ) | (cs->conn->flags & CO_FL_ERROR);
|
||||
ret |= (si_ic(si_b)->flags & CF_READ_PARTIAL) | (cs->conn->flags & CO_FL_ERROR);
|
||||
|
||||
}
|
||||
if (ret)
|
||||
|
Loading…
Reference in New Issue
Block a user