From 7632548d9789e1588a1ad70ced3b87ef06d41b21 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Thu, 17 Aug 2017 15:54:46 +0200 Subject: [PATCH] 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. --- src/stream.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/stream.c b/src/stream.c index 6b7be1e..3a88fd4 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) -- 1.7.10.4