From: Willy Tarreau Date: Wed, 20 Dec 2017 15:31:43 +0000 (+0100) Subject: MINOR: stream-int: set flag SI_FL_CLEAN_ABRT when mux supports clean aborts X-Git-Tag: v1.9-dev1~561 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=984fca936305d7552d92559436f3d5dbe4d917a0;p=thirdparty%2Fhaproxy.git MINOR: stream-int: set flag SI_FL_CLEAN_ABRT when mux supports clean aborts By copying the info in the stream interface that the mux cleanly reports aborts, we'll have the ability to check this flag wherever needed regardless of the presence of a mux or not. --- diff --git a/include/types/stream_interface.h b/include/types/stream_interface.h index 95cf47a01a..0c83759da2 100644 --- a/include/types/stream_interface.h +++ b/include/types/stream_interface.h @@ -74,6 +74,7 @@ enum { SI_FL_SRC_ADDR = 0x1000, /* get the source ip/port with getsockname */ SI_FL_WANT_PUT = 0x2000, /* an applet would like to put some data into the buffer */ SI_FL_WANT_GET = 0x4000, /* an applet would like to get some data from the buffer */ + SI_FL_CLEAN_ABRT = 0x8000, /* SI_FL_ERR is used to report aborts, and not SHUTR */ }; /* A stream interface has 3 parts : diff --git a/src/stream.c b/src/stream.c index 32da7c2e35..ba5dbffee6 100644 --- a/src/stream.c +++ b/src/stream.c @@ -195,6 +195,9 @@ struct stream *stream_new(struct session *sess, enum obj_type *origin) si_set_state(&s->si[0], SI_ST_EST); s->si[0].hcto = sess->fe->timeout.clientfin; + if (cs && cs->conn->mux && cs->conn->mux->flags & MX_FL_CLEAN_ABRT) + s->si[0].flags |= SI_FL_CLEAN_ABRT; + /* attach the incoming connection to the stream interface now. */ if (cs) si_attach_cs(&s->si[0], cs);