packages/net/haproxy/patches/0003-MEDIUM-session-disable-lingering-on-the-server-when-.patch

37 lines
1.3 KiB
Diff
Raw Normal View History

From d45840bd28f5cf604d320ab9ff308ba7ba8c0b28 Mon Sep 17 00:00:00 2001
From: Willy Tarreau <w@1wt.eu>
Date: Fri, 21 Jun 2013 08:20:19 +0200
Subject: [PATCH 3/9] MEDIUM: session: disable lingering on the server when the
client aborts
When abortonclose is used and an error is detected on the client side,
better force an RST to the server. That way we propagate to the server
the same vision we got from the client, and we ensure that we won't keep
TIME_WAITs.
(cherry picked from commit 8615c2af67dc2be07bdb246ed13130fe7d32e3d1)
---
src/session.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/session.c b/src/session.c
index 21ecb9f..9ed932c 100644
--- a/src/session.c
+++ b/src/session.c
@@ -1370,8 +1370,11 @@ resync_stream_interface:
buffer_shutw_now(s->req);
/* shutdown(write) pending */
- if (unlikely((s->req->flags & (BF_SHUTW|BF_SHUTW_NOW|BF_OUT_EMPTY)) == (BF_SHUTW_NOW|BF_OUT_EMPTY)))
+ if (unlikely((s->req->flags & (BF_SHUTW|BF_SHUTW_NOW|BF_OUT_EMPTY)) == (BF_SHUTW_NOW|BF_OUT_EMPTY))) {
+ if (s->req->flags & BF_READ_ERROR)
+ s->req->cons->flags |= SI_FL_NOLINGER;
s->req->cons->shutw(s->req->cons);
+ }
/* shutdown(write) done on server side, we must stop the client too */
if (unlikely((s->req->flags & (BF_SHUTW|BF_SHUTR|BF_SHUTR_NOW)) == BF_SHUTW &&
--
1.8.1.5