From: Willy Tarreau Date: Wed, 12 Sep 2018 07:08:54 +0000 (+0200) Subject: MINOR: h1: properly pre-initialize err_pos to -2 X-Git-Tag: v1.9-dev2~17 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bbf3823f82648daaa3fd0f14f8ad787cff7fcf63;p=thirdparty%2Fhaproxy.git MINOR: h1: properly pre-initialize err_pos to -2 This way we maintain the old mechanism stating that -2 means we block on errors, -1 means we only capture them, and a positive value indicates the position of the first error. --- diff --git a/include/proto/h1.h b/include/proto/h1.h index b6c61352e4..c82e17ad55 100644 --- a/include/proto/h1.h +++ b/include/proto/h1.h @@ -309,7 +309,7 @@ static inline struct h1m *h1m_init_req(struct h1m *h1m) h1m->flags = H1_MF_NONE; h1m->curr_len = 0; h1m->body_len = 0; - h1m->err_pos = 0; + h1m->err_pos = -2; h1m->err_state = 0; return h1m; } @@ -323,7 +323,7 @@ static inline struct h1m *h1m_init_res(struct h1m *h1m) h1m->flags = H1_MF_RESP; h1m->curr_len = 0; h1m->body_len = 0; - h1m->err_pos = 0; + h1m->err_pos = -2; h1m->err_state = 0; return h1m; } diff --git a/include/types/h1.h b/include/types/h1.h index 81ea3da9f9..7edfbd89e7 100644 --- a/include/types/h1.h +++ b/include/types/h1.h @@ -143,7 +143,12 @@ enum h1m_state { #define H1_MF_RESP 0x00000004 // this message is the response message -/* basic HTTP/1 message state for use in parsers */ +/* basic HTTP/1 message state for use in parsers. The err_pos field is special, + * it is pre-set to a negative value (-1 or -2), and once non-negative it contains + * the relative position in the message of the first parse error. -2 is used to tell + * the parser that we want to block the invalid message. -1 is used to only perform + * a silent capture. + */ struct h1m { enum h1m_state state; // H1 message state (H1_MSG_*) /* 8 bits available here */