From: Willy Tarreau Date: Thu, 17 Aug 2017 13:54:46 +0000 (+0200) Subject: BUG/MAJOR: stream: in stream_free(), close the front endpoint and not the origin X-Git-Tag: v1.8-dev3~186 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7632548d9789e1588a1ad70ced3b87ef06d41b21;p=thirdparty%2Fhaproxy.git BUG/MAJOR: stream: in stream_free(), close the front endpoint and not the origin stream_free() used to close the front connection by using s->sess->origin, instead of using s->si[0].end. This is very visible in HTTP/2 where the front connection is abusively closed and causes all sort of issues including crashes caused by double closes due to the same origin being referenced many times. It's also suspected that it may have caused some of the early issues met during the Lua development. It's uncertain whether stable branches are affected. It might be worth backporting it once it has been confirmed not to create new impacts. --- diff --git a/src/stream.c b/src/stream.c index 6b7be1eecf..3a88fd47c5 100644 --- a/src/stream.c +++ b/src/stream.c @@ -262,7 +262,7 @@ static void stream_free(struct stream *s) struct session *sess = strm_sess(s); struct proxy *fe = sess->fe; struct bref *bref, *back; - struct connection *cli_conn = objt_conn(sess->origin); + struct connection *cli_conn = objt_conn(s->si[0].end); int i; if (s->pend_pos)