]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
[BUG] do not forward close from cons to prod with analysers
authorWilly Tarreau <w@1wt.eu>
Sun, 7 Dec 2008 12:05:04 +0000 (13:05 +0100)
committerWilly Tarreau <w@1wt.eu>
Sun, 7 Dec 2008 12:05:04 +0000 (13:05 +0100)
We must not forward a close from consumer to producer as long as
an analyser is present.

src/session.c

index 0df174a1c961239a50eb23563573e53426dc9edb..29ddb6f93e964dcfd35888ed323d4ecfd93f369c 100644 (file)
@@ -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 */