]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: http-ana: Use http_set_term_flags() in most of HTTP analyzers
authorChristopher Faulet <cfaulet@haproxy.com>
Fri, 13 Jan 2023 08:43:21 +0000 (09:43 +0100)
committerChristopher Faulet <cfaulet@haproxy.com>
Fri, 13 Jan 2023 09:24:17 +0000 (10:24 +0100)
We use the new function to set the HTTP termination flags in the most
obvious places. The other places are a bit specific and will be handled one
by one in dedicated patched.

src/http_ana.c

index 873064d55cb9af2afb74592f72cf0eed432b2de6..edd635daf34891fe017f704c50e5981bcbbc23ac 100644 (file)
@@ -332,11 +332,7 @@ int http_wait_for_request(struct stream *s, struct channel *req, int an_bit)
 
  return_prx_cond:
        http_reply_and_close(s, txn->status, http_error_message(s));
-
-       if (!(s->flags & SF_ERR_MASK))
-               s->flags |= SF_ERR_PRXCOND;
-       if (!(s->flags & SF_FINST_MASK))
-               s->flags |= SF_FINST_R;
+       http_set_term_flags(s);
 
        DBG_TRACE_DEVEL("leaving on error",
                        STRM_EV_STRM_ANA|STRM_EV_HTTP_ANA|STRM_EV_HTTP_ERR, s, txn);
@@ -465,8 +461,7 @@ int http_process_req_common(struct stream *s, struct channel *req, int an_bit, s
 
                if (!(s->flags & SF_ERR_MASK))      // this is not really an error but it is
                        s->flags |= SF_ERR_LOCAL;   // to mark that it comes from the proxy
-               if (!(s->flags & SF_FINST_MASK))
-                       s->flags |= SF_FINST_R;
+               http_set_term_flags(s);
 
                if (HAS_FILTERS(s))
                        req->analysers |= AN_REQ_FLT_HTTP_HDRS;
@@ -599,10 +594,7 @@ int http_process_req_common(struct stream *s, struct channel *req, int an_bit, s
        /* fall through */
 
  return_prx_cond:
-       if (!(s->flags & SF_ERR_MASK))
-               s->flags |= SF_ERR_PRXCOND;
-       if (!(s->flags & SF_FINST_MASK))
-               s->flags |= SF_FINST_R;
+       http_set_term_flags(s);
 
        req->analysers &= AN_REQ_FLT_END;
        req->analyse_exp = TICK_ETERNITY;
@@ -839,11 +831,7 @@ int http_process_request(struct stream *s, struct channel *req, int an_bit)
                _HA_ATOMIC_INC(&sess->listener->counters->internal_errors);
 
        http_reply_and_close(s, txn->status, http_error_message(s));
-
-       if (!(s->flags & SF_ERR_MASK))
-               s->flags |= SF_ERR_PRXCOND;
-       if (!(s->flags & SF_FINST_MASK))
-               s->flags |= SF_FINST_R;
+       http_set_term_flags(s);
 
        DBG_TRACE_DEVEL("leaving on error",
                        STRM_EV_STRM_ANA|STRM_EV_HTTP_ANA|STRM_EV_HTTP_ERR, s, txn);
@@ -884,11 +872,7 @@ int http_process_tarpit(struct stream *s, struct channel *req, int an_bit)
        s->logs.t_queue = tv_ms_elapsed(&s->logs.tv_accept, &now);
 
        http_reply_and_close(s, txn->status, (!(req->flags & CF_READ_ERROR) ? http_error_message(s) : NULL));
-
-       if (!(s->flags & SF_ERR_MASK))
-               s->flags |= SF_ERR_PRXCOND;
-       if (!(s->flags & SF_FINST_MASK))
-               s->flags |= SF_FINST_T;
+       http_set_term_flags(s);
 
        DBG_TRACE_LEAVE(STRM_EV_STRM_ANA|STRM_EV_HTTP_ANA, s, txn);
        return 0;
@@ -1392,8 +1376,7 @@ int http_wait_for_response(struct stream *s, struct channel *rep, int an_bit)
 
                        if (!(s->flags & SF_ERR_MASK))
                                s->flags |= SF_ERR_SRVCL;
-                       if (!(s->flags & SF_FINST_MASK))
-                               s->flags |= SF_FINST_H;
+                       http_set_term_flags(s);
                        DBG_TRACE_DEVEL("leaving on error",
                                        STRM_EV_STRM_ANA|STRM_EV_HTTP_ANA|STRM_EV_HTTP_ERR, s, txn);
                        return 0;
@@ -1422,8 +1405,7 @@ int http_wait_for_response(struct stream *s, struct channel *rep, int an_bit)
 
                        if (!(s->flags & SF_ERR_MASK))
                                s->flags |= SF_ERR_SRVTO;
-                       if (!(s->flags & SF_FINST_MASK))
-                               s->flags |= SF_FINST_H;
+                       http_set_term_flags(s);
                        DBG_TRACE_DEVEL("leaving on error",
                                        STRM_EV_STRM_ANA|STRM_EV_HTTP_ANA|STRM_EV_HTTP_ERR, s, txn);
                        return 0;
@@ -1443,8 +1425,7 @@ int http_wait_for_response(struct stream *s, struct channel *rep, int an_bit)
 
                        if (!(s->flags & SF_ERR_MASK))
                                s->flags |= SF_ERR_CLICL;
-                       if (!(s->flags & SF_FINST_MASK))
-                               s->flags |= SF_FINST_H;
+                       http_set_term_flags(s);
 
                        /* process_stream() will take care of the error */
                        DBG_TRACE_DEVEL("leaving on error",
@@ -1479,8 +1460,7 @@ int http_wait_for_response(struct stream *s, struct channel *rep, int an_bit)
 
                        if (!(s->flags & SF_ERR_MASK))
                                s->flags |= SF_ERR_SRVCL;
-                       if (!(s->flags & SF_FINST_MASK))
-                               s->flags |= SF_FINST_H;
+                       http_set_term_flags(s);
                        DBG_TRACE_DEVEL("leaving on error",
                                        STRM_EV_STRM_ANA|STRM_EV_HTTP_ANA|STRM_EV_HTTP_ERR, s, txn);
                        return 0;
@@ -1498,8 +1478,7 @@ int http_wait_for_response(struct stream *s, struct channel *rep, int an_bit)
 
                        if (!(s->flags & SF_ERR_MASK))
                                s->flags |= SF_ERR_CLICL;
-                       if (!(s->flags & SF_FINST_MASK))
-                               s->flags |= SF_FINST_H;
+                       http_set_term_flags(s);
 
                        /* process_stream() will take care of the error */
                        DBG_TRACE_DEVEL("leaving on error",
@@ -1763,11 +1742,7 @@ int http_wait_for_response(struct stream *s, struct channel *rep, int an_bit)
 
  return_prx_cond:
        http_reply_and_close(s, txn->status, http_error_message(s));
-
-       if (!(s->flags & SF_ERR_MASK))
-               s->flags |= SF_ERR_PRXCOND;
-       if (!(s->flags & SF_FINST_MASK))
-               s->flags |= SF_FINST_H;
+       http_set_term_flags(s);
 
        s->scb->flags |= SC_FL_NOLINGER;
        DBG_TRACE_DEVEL("leaving on error",
@@ -2092,10 +2067,7 @@ int http_process_res_common(struct stream *s, struct channel *rep, int an_bit, s
        s->logs.t_data = -1; /* was not a valid response */
        s->scb->flags |= SC_FL_NOLINGER;
 
-       if (!(s->flags & SF_ERR_MASK))
-               s->flags |= SF_ERR_PRXCOND;
-       if (!(s->flags & SF_FINST_MASK))
-               s->flags |= SF_FINST_H;
+       http_set_term_flags(s);
 
        rep->analysers &= AN_RES_FLT_END;
        s->req.analysers &= AN_REQ_FLT_END;
@@ -2612,8 +2584,7 @@ int http_apply_redirect_rule(struct redirect_rule *rule, struct stream *s, struc
 
        if (!(s->flags & SF_ERR_MASK))
                s->flags |= SF_ERR_LOCAL;
-       if (!(s->flags & SF_FINST_MASK))
-               s->flags |= ((rule->flags & REDIRECT_FLAG_FROM_REQ) ? SF_FINST_R : SF_FINST_H);
+       http_set_term_flags(s);
 
   out:
        free_trash_chunk(chunk);