mirror of
https://github.com/haproxy/haproxy.git
synced 2026-02-20 00:10:41 -05:00
[MEDIUM] session: set SI_FL_NOLINGER when aborting on write timeouts
Doing this helps us flush the system buffers from all unread data. This avoids having orphans when clients suddenly get off the net without reading their entire response.
This commit is contained in:
parent
9438c718ce
commit
1464140fce
1 changed files with 10 additions and 6 deletions
|
|
@ -668,19 +668,23 @@ struct task *process_session(struct task *t)
|
|||
|
||||
buffer_check_timeouts(s->req);
|
||||
|
||||
if (unlikely((s->req->flags & (BF_SHUTW|BF_WRITE_TIMEOUT)) == BF_WRITE_TIMEOUT)) {
|
||||
s->req->cons->flags |= SI_FL_NOLINGER;
|
||||
s->req->cons->shutw(s->req->cons);
|
||||
}
|
||||
|
||||
if (unlikely((s->req->flags & (BF_SHUTR|BF_READ_TIMEOUT)) == BF_READ_TIMEOUT))
|
||||
s->req->prod->shutr(s->req->prod);
|
||||
|
||||
if (unlikely((s->req->flags & (BF_SHUTW|BF_WRITE_TIMEOUT)) == BF_WRITE_TIMEOUT))
|
||||
s->req->cons->shutw(s->req->cons);
|
||||
|
||||
buffer_check_timeouts(s->rep);
|
||||
|
||||
if (unlikely((s->rep->flags & (BF_SHUTW|BF_WRITE_TIMEOUT)) == BF_WRITE_TIMEOUT)) {
|
||||
s->rep->cons->flags |= SI_FL_NOLINGER;
|
||||
s->rep->cons->shutw(s->rep->cons);
|
||||
}
|
||||
|
||||
if (unlikely((s->rep->flags & (BF_SHUTR|BF_READ_TIMEOUT)) == BF_READ_TIMEOUT))
|
||||
s->rep->prod->shutr(s->rep->prod);
|
||||
|
||||
if (unlikely((s->rep->flags & (BF_SHUTW|BF_WRITE_TIMEOUT)) == BF_WRITE_TIMEOUT))
|
||||
s->rep->cons->shutw(s->rep->cons);
|
||||
}
|
||||
|
||||
/* 1b: check for low-level errors reported at the stream interface.
|
||||
|
|
|
|||
Loading…
Reference in a new issue