]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: stream: always release the stream-interface on abort
authorWilly Tarreau <w@1wt.eu>
Fri, 24 Nov 2017 14:01:10 +0000 (15:01 +0100)
committerWilly Tarreau <w@1wt.eu>
Fri, 24 Nov 2017 14:04:36 +0000 (15:04 +0100)
The cache exhibited a but in process_stream() where upon abort it is
possible to switch the stream-int's state to SI_ST_CLO without calling
si_release_endpoint(), resulting in a possibly missing ->release() for
the applet.

It should affect all other applets as well (eg: lua, spoe, peers) and
should carefully be backported to stable branches after some observation
period.

src/stream.c

index d98c7f98de14573b218120116512e9b2b883b28e..63d22011229f18500fc073e2ee15a03a2b11eb0c 100644 (file)
@@ -2180,6 +2180,7 @@ struct task *process_stream(struct task *t)
                        }
                }
                else {
+                       si_release_endpoint(si_b);
                        si_b->state = SI_ST_CLO; /* shutw+ini = abort */
                        channel_shutw_now(req);        /* fix buffer flags upon abort */
                        channel_shutr_now(res);