packages/net/haproxy/patches/0003-MEDIUM-session-disable-lingering-on-the-server-when-.patch
heil a9334ea84f package: haproxy
- add backported patches from 1.5dev



git-svn-id: svn://svn.openwrt.org/openwrt/packages@37909 3c298f89-4303-0410-b956-a3cf2f4a3e73
2013-09-05 22:42:31 +00:00

37 lines
1.3 KiB
Diff

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