From bbf3823f82648daaa3fd0f14f8ad787cff7fcf63 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Wed, 12 Sep 2018 09:08:54 +0200 Subject: [PATCH] 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. --- include/proto/h1.h | 4 ++-- include/types/h1.h | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/include/proto/h1.h b/include/proto/h1.h index b6c61352e..c82e17ad5 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 81ea3da9f..7edfbd89e 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 */