]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: proto_http: Remove unused http txn flags
authorChristopher Faulet <cfaulet@haproxy.com>
Tue, 16 Jul 2019 12:32:23 +0000 (14:32 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Fri, 19 Jul 2019 07:24:12 +0000 (09:24 +0200)
Many flags of the HTTP transction (TX_*) are now unused and useless. So the
flags TX_WAIT_CLEANUP, TX_HDR_CONN_*, TX_CON_CLO_SET and TX_CON_KAL_SET were
removed. Most of TX_CON_WANT_* were also removed. Only TX_CON_WANT_TUN has been
kept.

contrib/debug/flags.c
include/types/proto_http.h
src/proto_htx.c

index 56602ad5f37081bb3485bfd3cac20699f9aa782d..dc4c044673340fd2737ee7383390a685bca8e7fe 100644 (file)
@@ -273,21 +273,8 @@ void show_txn_flags(unsigned int f)
 
        SHOW_FLAG(f, TX_NOT_FIRST);
        SHOW_FLAG(f, TX_USE_PX_CONN);
-       SHOW_FLAG(f, TX_HDR_CONN_KAL);
-       SHOW_FLAG(f, TX_HDR_CONN_CLO);
-       SHOW_FLAG(f, TX_HDR_CONN_PRS);
        SHOW_FLAG(f, TX_WAIT_NEXT_RQ);
-       SHOW_FLAG(f, TX_HDR_CONN_UPG);
-       SHOW_FLAG(f, TX_CON_KAL_SET);
-       SHOW_FLAG(f, TX_CON_CLO_SET);
-
-       //printf("%s", f ? "" : " | ");
-       switch (f & TX_CON_WANT_MSK) {
-       case TX_CON_WANT_KAL: /*f &= ~TX_CON_WANT_MSK ; printf("TX_CON_WANT_KAL%s", f ? " | " : "");*/ break;
-       case TX_CON_WANT_TUN: f &= ~TX_CON_WANT_MSK ; printf("TX_CON_WANT_TUN%s", f ? " | " : ""); break;
-       case TX_CON_WANT_SCL: f &= ~TX_CON_WANT_MSK ; printf("TX_CON_WANT_SCL%s", f ? " | " : ""); break;
-       case TX_CON_WANT_CLO: f &= ~TX_CON_WANT_MSK ; printf("TX_CON_WANT_CLO%s", f ? " | " : ""); break;
-       }
+       SHOW_FLAG(f, TX_CON_WANT_TUN);
 
        SHOW_FLAG(f, TX_CACHE_COOK);
        SHOW_FLAG(f, TX_CACHEABLE);
index 205bd5f66a17ef9fa53f9dbabbff7a8ea3a865e1..9d84ef4656d272a1765076940370c7eaaaa0087c 100644 (file)
 #define TX_CACHE_IGNORE 0x00004000     /* do not retrieve object from cache */
 #define TX_CACHE_SHIFT 12              /* bit shift */
 
-/* Unused: 0x8000 */
+/* Unused: 0x00008000, 0x00010000, 0x00020000, 0x00080000 */
 
-#define TX_WAIT_CLEANUP        0x0010000       /* this transaction is waiting for a clean up */
+#define TX_CON_WANT_TUN 0x00100000 /* Will be a tunnel (CONNECT or 101-Switching-Protocol) */
 
-/* Unused: 0x20000, 0x80000 */
+/* unused: 0x00200000, 0x00400000, 0x00800000, 0x01000000, 0x02000000 */
 
-
-/* indicate how we *want* the connection to behave, regardless of what is in
- * the headers. We have 4 possible values right now :
- * - WANT_KAL : try to maintain keep-alive (default when nothing configured)
- * - WANT_TUN : will be a tunnel (CONNECT).
- * - WANT_SCL : enforce close on the server side
- * - WANT_CLO : enforce close on both sides
- */
-#define TX_CON_WANT_KAL 0x00000000     /* note: it's important that it is 0 (init) */
-#define TX_CON_WANT_TUN 0x00100000
-#define TX_CON_WANT_SCL 0x00200000
-#define TX_CON_WANT_CLO 0x00300000
-#define TX_CON_WANT_MSK 0x00300000     /* this is the mask to get the bits */
-
-#define TX_CON_CLO_SET  0x00400000     /* "connection: close" is now set */
-#define TX_CON_KAL_SET  0x00800000     /* "connection: keep-alive" is now set */
-
-/* unused: 0x01000000 */
-
-#define TX_HDR_CONN_UPG 0x02000000     /* The "Upgrade" token was found in the "Connection" header */
 #define TX_WAIT_NEXT_RQ        0x04000000      /* waiting for the second request to start, use keep-alive timeout */
 
-#define TX_HDR_CONN_PRS        0x08000000      /* "connection" header already parsed (req or res), results below */
-#define TX_HDR_CONN_CLO        0x10000000      /* "Connection: close" was present at least once */
-#define TX_HDR_CONN_KAL        0x20000000      /* "Connection: keep-alive" was present at least once */
+/* unused: 0x08000000, 0x10000000, 0x20000000 */
+
 #define TX_USE_PX_CONN 0x40000000      /* Use "Proxy-Connection" instead of "Connection" */
 
 /* used only for keep-alive purposes, to indicate we're on a second transaction */
index 35172696b641d304c1fee9be393d7ac9bfc44da2..88be56e52f5394c4ec2f1a89355131ba980169f7 100644 (file)
@@ -400,9 +400,6 @@ int htx_wait_for_request(struct stream *s, struct channel *req, int an_bit)
        if (unlikely((s->logs.logwait & LW_REQHDR) && s->req_cap))
                htx_capture_headers(htx, s->req_cap, sess->fe->req_cap);
 
-       /* by default, close the stream at the end of the transaction. */
-       txn->flags = (txn->flags & ~TX_CON_WANT_MSK) | TX_CON_WANT_CLO;
-
        /* we may have to wait for the request's body */
        if (s->be->options & PR_O_WREQ_BODY)
                req->analysers |= AN_REQ_HTTP_BODY;
@@ -1242,7 +1239,7 @@ int htx_request_forward_body(struct stream *s, struct channel *req, int an_bit)
   done:
        /* other states, DONE...TUNNEL */
        /* we don't want to forward closes on DONE except in tunnel mode. */
-       if ((txn->flags & TX_CON_WANT_MSK) != TX_CON_WANT_TUN)
+       if (!(txn->flags & TX_CON_WANT_TUN))
                channel_dont_close(req);
 
        if (HAS_REQ_DATA_FILTERS(s)) {
@@ -1275,8 +1272,7 @@ int htx_request_forward_body(struct stream *s, struct channel *req, int an_bit)
         * it can be abused to exhaust source ports. */
        if (s->be->options & PR_O_ABRT_CLOSE) {
                channel_auto_read(req);
-               if ((req->flags & (CF_SHUTR|CF_READ_NULL)) &&
-                   ((txn->flags & TX_CON_WANT_MSK) != TX_CON_WANT_TUN))
+               if ((req->flags & (CF_SHUTR|CF_READ_NULL)) && !(txn->flags & TX_CON_WANT_TUN))
                        s->si[1].flags |= SI_FL_NOLINGER;
                channel_auto_close(req);
        }
@@ -1751,7 +1747,7 @@ int htx_wait_for_response(struct stream *s, struct channel *rep, int an_bit)
                 * header which contains information about that protocol for
                 * responses with status 101 (eg: see RFC2817 about TLS).
                 */
-               txn->flags = (txn->flags & ~TX_CON_WANT_MSK) | TX_CON_WANT_TUN;
+               txn->flags |= TX_CON_WANT_TUN;
        }
 
        /* check for NTML authentication headers in 401 (WWW-Authenticate) and
@@ -5142,7 +5138,7 @@ static void htx_end_request(struct stream *s)
                 * mode, we'll have to wait for the last bytes to leave in either
                 * direction, and sometimes for a close to be effective.
                 */
-               if ((txn->flags & TX_CON_WANT_MSK) == TX_CON_WANT_TUN) {
+               if (txn->flags & TX_CON_WANT_TUN) {
                        /* Tunnel mode will not have any analyser so it needs to
                         * poll for reads.
                         */
@@ -5262,7 +5258,7 @@ static void htx_end_response(struct stream *s)
                 * mode, we'll have to wait for the last bytes to leave in either
                 * direction, and sometimes for a close to be effective.
                 */
-               if ((txn->flags & TX_CON_WANT_MSK) == TX_CON_WANT_TUN) {
+               if (txn->flags & TX_CON_WANT_TUN) {
                        channel_auto_read(chn);
                        chn->flags |= CF_NEVER_WAIT;
                        if (b_data(&chn->buf))