]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: checks: tcp-check actions are enums, not flags
authorWilly Tarreau <w@1wt.eu>
Fri, 6 Dec 2013 15:16:41 +0000 (16:16 +0100)
committerWilly Tarreau <w@1wt.eu>
Fri, 6 Dec 2013 15:16:41 +0000 (16:16 +0100)
In recent commit 5ecb77f (MEDIUM: checks: add send/expect tcp based check),
bitfields were mistakenly used at some places for the actions. Fortunately,
the only two actions right now are 1 and 2 so they don't share any bit in
common and the bug has no impact.

No backport is needed.

include/types/checks.h
src/checks.c

index d7d9725329bdf925ddde60e6b5afd299a79921a3..956df3a0c116cce446fb48f9065bcfc03ee2004a 100644 (file)
@@ -106,9 +106,9 @@ struct analyze_status {
        unsigned char lr[HANA_OBS_SIZE];        /* result for l4/l7: 0 = ignore, 1 - error, 2 - OK */
 };
 
-/* bits for tcpcheck_rule->action */
+/* possible actions for tcpcheck_rule->action */
 enum {
-       TCPCHK_ACT_SEND        = 1,             /* send action, regular string format */
+       TCPCHK_ACT_SEND        = 0,             /* send action, regular string format */
        TCPCHK_ACT_EXPECT,                      /* expect action, either regular or binary string */
 };
 
index 6373783cf0cb7508eb232ac89da9e42d01047389..9282e89390d4f824cf0186c6fbcb705d40de21db 100644 (file)
@@ -1998,7 +1998,7 @@ static void tcpcheck_main(struct connection *conn)
                if (&cur->list == head)
                        break;
 
-               if (check->current_step->action & TCPCHK_ACT_SEND) {
+               if (check->current_step->action == TCPCHK_ACT_SEND) {
                        /* reset the read buffer */
                        if (*check->bi->data != '\0') {
                                *check->bi->data = '\0';
@@ -2029,7 +2029,7 @@ static void tcpcheck_main(struct connection *conn)
                        cur = (struct tcpcheck_rule *)cur->list.n;
                        check->current_step = cur;
                } /* end 'send' */
-               else if (check->current_step->action & TCPCHK_ACT_EXPECT) {
+               else if (check->current_step->action == TCPCHK_ACT_EXPECT) {
                        if (unlikely(check->result & SRV_CHK_FAILED))
                                goto out_end_tcpcheck;
 
@@ -2111,7 +2111,7 @@ static void tcpcheck_main(struct connection *conn)
                                else {
                                        cur = (struct tcpcheck_rule*)cur->list.n;
                                        check->current_step = cur;
-                                       if (check->current_step->action & TCPCHK_ACT_EXPECT)
+                                       if (check->current_step->action == TCPCHK_ACT_EXPECT)
                                                goto tcpcheck_expect;
                                        __conn_data_stop_recv(conn);
                                }
@@ -2122,7 +2122,7 @@ static void tcpcheck_main(struct connection *conn)
                                if (cur->inverse) {
                                        cur = (struct tcpcheck_rule*)cur->list.n;
                                        check->current_step = cur;
-                                       if (check->current_step->action & TCPCHK_ACT_EXPECT)
+                                       if (check->current_step->action == TCPCHK_ACT_EXPECT)
                                                goto tcpcheck_expect;
                                        __conn_data_stop_recv(conn);
                                }