diff --git a/include/types/stream.h b/include/types/stream.h index 5e854c54bb..93a39a3ecc 100644 --- a/include/types/stream.h +++ b/include/types/stream.h @@ -58,7 +58,7 @@ #define SF_REDISP 0x00000100 /* set if this stream was redispatched from one server to another */ /* unused: 0x00000200 */ #define SF_REDIRECTABLE 0x00000400 /* set if this stream is redirectable (GET or HEAD) */ -/* unused: 0x00000800 */ +#define SF_HTX 0x00000800 /* set if this stream is an htx stream */ /* stream termination conditions, bits values 0x1000 to 0x7000 (0-9 shift 12) */ #define SF_ERR_NONE 0x00000000 /* normal end of request */ diff --git a/src/stream.c b/src/stream.c index 764c5f32ec..551f8e2ccf 100644 --- a/src/stream.c +++ b/src/stream.c @@ -236,8 +236,15 @@ 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; + if (cs && cs->conn->mux) { + if (cs->conn->mux->flags & MX_FL_CLEAN_ABRT) + s->si[0].flags |= SI_FL_CLEAN_ABRT; + if (cs->conn->mux->flags & MX_FL_HTX) + s->flags |= SF_HTX; + } + /* Set SF_HTX flag for HTX frontends. */ + if (sess->fe->mode == PR_MODE_HTTP && sess->fe->options2 & PR_O2_USE_HTX) + s->flags |= SF_HTX; /* attach the incoming connection to the stream interface now. */ if (cs)