]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: h1: properly pre-initialize err_pos to -2
authorWilly Tarreau <w@1wt.eu>
Wed, 12 Sep 2018 07:08:54 +0000 (09:08 +0200)
committerWilly Tarreau <w@1wt.eu>
Wed, 12 Sep 2018 15:38:25 +0000 (17:38 +0200)
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
include/types/h1.h

index b6c61352e47a0960ab3e88bdf750b0dc6239050f..c82e17ad55bcf04fd21057902979dad343b5b5d5 100644 (file)
@@ -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;
 }
index 81ea3da9f9156cdb7c61707d7a386f6d6171237a..7edfbd89e77c5a5ec3d316e04a5daf9a03d65684 100644 (file)
@@ -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 */