From 3dbc69494ac2b348f93ba5981c68041260ddd4e3 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Sun, 7 Dec 2008 13:05:04 +0100 Subject: [PATCH] [BUG] do not forward close from cons to prod with analysers We must not forward a close from consumer to producer as long as an analyser is present. --- src/session.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/session.c b/src/session.c index 0df174a1c..29ddb6f93 100644 --- a/src/session.c +++ b/src/session.c @@ -759,7 +759,8 @@ resync_stream_interface: 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)) + if (unlikely((s->req->flags & (BF_SHUTW|BF_SHUTR|BF_SHUTR_NOW)) == BF_SHUTW && + !s->req->analysers)) buffer_shutr_now(s->req); /* shutdown(read) pending */ @@ -857,7 +858,8 @@ resync_stream_interface: s->rep->cons->shutw(s->rep->cons); /* shutdown(write) done on the client side, we must stop the server too */ - if (unlikely((s->rep->flags & (BF_SHUTW|BF_SHUTR|BF_SHUTR_NOW)) == BF_SHUTW)) + if (unlikely((s->rep->flags & (BF_SHUTW|BF_SHUTR|BF_SHUTR_NOW)) == BF_SHUTW) && + !s->rep->analysers) buffer_shutr_now(s->rep); /* shutdown(read) pending */