txn->status = 503;
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_LOCAL; /* we don't want a real error here */
+ stream_report_term_evt(s->scf, strm_tevt_type_intercepted);
goto return_prx_cond;
}
txn->status = 200;
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_LOCAL; /* we don't want a real error here */
+ stream_report_term_evt(s->scf, strm_tevt_type_intercepted);
goto return_prx_cond;
}
}
_HA_ATOMIC_INC(&sess->fe->fe_counters.internal_errors);
if (sess->listener && sess->listener->counters)
_HA_ATOMIC_INC(&sess->listener->counters->internal_errors);
+ stream_report_term_evt(s->scb, strm_tevt_type_internal_err);
goto return_prx_cond;
return_bad_req:
_HA_ATOMIC_INC(&sess->fe->fe_counters.failed_req);
if (sess->listener && sess->listener->counters)
_HA_ATOMIC_INC(&sess->listener->counters->failed_req);
+ stream_report_term_evt(s->scb, strm_tevt_type_proto_err);
/* fall through */
return_prx_cond:
- // XXX: All errors are handled as intercepted here !
- stream_report_term_evt(s->scf, tevt_loc_strm, tevt_type_intercepted);
http_set_term_flags(s);
http_reply_and_close(s, txn->status, http_error_message(s));
goto deny;
case HTTP_RULE_RES_ABRT: /* abort request, response already sent. Eg: auth */
+ stream_report_term_evt(s->scf, strm_tevt_type_intercepted);
goto return_prx_cond;
case HTTP_RULE_RES_DONE: /* OK, but terminate request processing (eg: redirect) */
if (verdict == HTTP_RULE_RES_DENY) /* stats http-request deny */
goto deny;
- if (verdict == HTTP_RULE_RES_ABRT) /* stats auth / stats http-request auth */
+ if (verdict == HTTP_RULE_RES_ABRT) { /* stats auth / stats http-request auth */
+ stream_report_term_evt(s->scf, strm_tevt_type_intercepted);
goto return_prx_cond;
+ }
if (verdict == HTTP_RULE_RES_BADREQ) /* failed with a bad request */
goto return_bad_req;
if (!http_apply_redirect_rule(rule, s, txn)) {
goto return_int_err;
}
- stream_report_term_evt(s->scf, tevt_loc_strm, tevt_type_intercepted);
+ stream_report_term_evt(s->scf, strm_tevt_type_intercepted);
goto done;
}
_HA_ATOMIC_INC(&s->be->be_counters.denied_req);
if (sess->listener && sess->listener->counters)
_HA_ATOMIC_INC(&sess->listener->counters->denied_req);
+ stream_report_term_evt(s->scf, strm_tevt_type_intercepted);
goto done_without_exp;
deny: /* this request was blocked (denied) */
_HA_ATOMIC_INC(&s->be->be_counters.denied_req);
if (sess->listener && sess->listener->counters)
_HA_ATOMIC_INC(&sess->listener->counters->denied_req);
+ stream_report_term_evt(s->scf, strm_tevt_type_intercepted);
goto return_prx_err;
return_fail_rewrite:
_HA_ATOMIC_INC(&s->be->be_counters.internal_errors);
if (sess->listener && sess->listener->counters)
_HA_ATOMIC_INC(&sess->listener->counters->internal_errors);
+ stream_report_term_evt(s->scf, strm_tevt_type_internal_err);
goto return_prx_err;
return_bad_req:
_HA_ATOMIC_INC(&sess->fe->fe_counters.failed_req);
if (sess->listener && sess->listener->counters)
_HA_ATOMIC_INC(&sess->listener->counters->failed_req);
+ stream_report_term_evt(s->scf, strm_tevt_type_proto_err);
/* fall through */
return_prx_err:
/* fall through */
return_prx_cond:
- // XXX: All errors are handled as intercepted here !
- stream_report_term_evt(s->scf, tevt_loc_strm, tevt_type_intercepted);
http_set_term_flags(s);
req->analysers &= AN_REQ_FLT_END;
req->analyse_exp = TICK_ETERNITY;
_HA_ATOMIC_INC(&s->be->be_counters.internal_errors);
if (sess->listener && sess->listener->counters)
_HA_ATOMIC_INC(&sess->listener->counters->internal_errors);
+ stream_report_term_evt(s->scf, strm_tevt_type_internal_err);
- // XXX: All errors are handled as intercepted here !
- stream_report_term_evt(s->scf, tevt_loc_strm, tevt_type_intercepted);
http_set_term_flags(s);
http_reply_and_close(s, txn->status, http_error_message(s));
s->logs.t_queue = ns_to_ms(now_ns - s->logs.accept_ts);
// XXX: All errors are handled as intercepted here !
- stream_report_term_evt(s->scf, tevt_loc_strm, tevt_type_intercepted);
+ stream_report_term_evt(s->scf, strm_tevt_type_intercepted);
http_set_term_flags(s);
http_reply_and_close(s, txn->status, (!(s->scf->flags & SC_FL_ERROR) ? http_error_message(s) : NULL));
case HTTP_RULE_RES_ERROR:
goto return_int_err;
case HTTP_RULE_RES_ABRT:
+ stream_report_term_evt(s->scf, strm_tevt_type_intercepted);
goto return_prx_cond;
default:
goto return_int_err;
_HA_ATOMIC_INC(&s->be->be_counters.internal_errors);
if (sess->listener && sess->listener->counters)
_HA_ATOMIC_INC(&sess->listener->counters->internal_errors);
+ stream_report_term_evt(s->scf, strm_tevt_type_internal_err);
goto return_prx_err;
return_bad_req: /* let's centralize all bad requests */
_HA_ATOMIC_INC(&sess->fe->fe_counters.failed_req);
if (sess->listener && sess->listener->counters)
_HA_ATOMIC_INC(&sess->listener->counters->failed_req);
+ stream_report_term_evt(s->scf, strm_tevt_type_proto_err);
/* fall through */
return_prx_err:
/* fall through */
return_prx_cond:
- // XXX: All errors are handled as intercepted here !
- stream_report_term_evt(s->scf, tevt_loc_strm, tevt_type_intercepted);
http_set_term_flags(s);
req->analysers &= AN_REQ_FLT_END;
goto return_prx_cond;
return_int_err:
- // XXX: All errors are handled as intercepted here !
- stream_report_term_evt(s->scf, tevt_loc_strm, tevt_type_intercepted);
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_INTERNAL;
_HA_ATOMIC_INC(&sess->fe->fe_counters.internal_errors);
_HA_ATOMIC_INC(&sess->listener->counters->internal_errors);
if (objt_server(s->target))
_HA_ATOMIC_INC(&__objt_server(s->target)->counters.internal_errors);
+ stream_report_term_evt(s->scf, strm_tevt_type_internal_err);
status = 500;
COUNT_IF(1, "Internal error during request forwarding");
goto return_prx_cond;
return_bad_req:
- // XXX: All errors are handled as intercepted here !
- stream_report_term_evt(s->scf, tevt_loc_strm, tevt_type_intercepted);
_HA_ATOMIC_INC(&sess->fe->fe_counters.failed_req);
if (sess->listener && sess->listener->counters)
_HA_ATOMIC_INC(&sess->listener->counters->failed_req);
+ stream_report_term_evt(s->scf, strm_tevt_type_proto_err);
status = 400;
COUNT_IF(1, "Request parsing error during request forwarding");
/* fall through */
txn->status = 500;
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_INTERNAL;
+ stream_report_term_evt(s->scb, strm_tevt_type_internal_err);
goto return_prx_cond;
return_bad_res:
txn->status = 502;
stream_inc_http_fail_ctr(s);
+ stream_report_term_evt(s->scb, strm_tevt_type_proto_err);
/* fall through */
return_prx_cond:
- // XXX: All errors are handled as intercepted here !
- stream_report_term_evt(s->scb, tevt_loc_strm, tevt_type_intercepted);
http_set_term_flags(s);
http_reply_and_close(s, txn->status, http_error_message(s));
goto deny;
case HTTP_RULE_RES_ABRT: /* abort request, response already sent */
+ stream_report_term_evt(s->scb, strm_tevt_type_intercepted);
goto return_prx_cond;
case HTTP_RULE_RES_DONE: /* OK, but terminate request processing (eg: redirect) */
_HA_ATOMIC_INC(&sess->listener->counters->denied_resp);
if (objt_server(s->target))
_HA_ATOMIC_INC(&__objt_server(s->target)->counters.denied_resp);
+ stream_report_term_evt(s->scb, strm_tevt_type_intercepted);
goto return_prx_err;
return_fail_rewrite:
_HA_ATOMIC_INC(&sess->listener->counters->internal_errors);
if (objt_server(s->target))
_HA_ATOMIC_INC(&__objt_server(s->target)->counters.internal_errors);
+ stream_report_term_evt(s->scb, strm_tevt_type_internal_err);
goto return_prx_err;
return_bad_res:
_HA_ATOMIC_INC(&__objt_server(s->target)->counters.failed_resp);
health_adjust(__objt_server(s->target), HANA_STATUS_HTTP_RSP);
}
+ stream_report_term_evt(s->scb, strm_tevt_type_proto_err);
/* fall through */
return_prx_err:
return_prx_cond:
s->scb->flags |= SC_FL_NOLINGER;
-
- // XXX: All errors are handled as intercepted here !
- stream_report_term_evt(s->scb, tevt_loc_strm, tevt_type_intercepted);
http_set_term_flags(s);
rep->analysers &= AN_RES_FLT_END;
return_int_err:
// XXX: All errors are handled as intercepted here !
- stream_report_term_evt(s->scb, tevt_loc_strm, tevt_type_intercepted);
+ stream_report_term_evt(s->scb, strm_tevt_type_intercepted);
_HA_ATOMIC_INC(&sess->fe->fe_counters.internal_errors);
_HA_ATOMIC_INC(&s->be->be_counters.internal_errors);
if (sess->listener && sess->listener->counters)
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_INTERNAL;
COUNT_IF(1, "Internal error during response forwarding");
+ stream_report_term_evt(s->scb, strm_tevt_type_internal_err);
goto return_error;
return_bad_res:
// XXX: All errors are handled as intercepted here !
- stream_report_term_evt(s->scb, tevt_loc_strm, tevt_type_intercepted);
+ stream_report_term_evt(s->scb, strm_tevt_type_intercepted);
_HA_ATOMIC_INC(&s->be->be_counters.failed_resp);
if (objt_server(s->target)) {
_HA_ATOMIC_INC(&__objt_server(s->target)->counters.failed_resp);
}
stream_inc_http_fail_ctr(s);
COUNT_IF(1, "Response parsing error during response forwarding");
+ stream_report_term_evt(s->scb, strm_tevt_type_proto_err);
/* fall through */
return_error:
sc->flags |= SC_FL_SHUT_DONE;
oc->flags |= CF_WRITE_EVENT;
sc_set_hcto(sc);
- sc_report_term_evt(sedesc->sc, tevt_loc_strm, tevt_type_shutw);
+ sc_report_term_evt(sc, strm_tevt_type_shutw);
switch (sc->state) {
case SC_ST_RDY:
sc->flags |= SC_FL_EOS;
ic->flags |= CF_READ_EVENT;
sc_ep_report_read_activity(sc);
- sc_report_term_evt(sc, tevt_loc_strm, (sc->flags & SC_FL_EOI ? tevt_type_shutr: tevt_type_truncated_shutr));
+ sc_report_term_evt(sc, (sc->flags & SC_FL_EOI ? strm_tevt_type_eos: strm_tevt_type_truncated_eos));
if (sc->state != SC_ST_EST)
return;
if (sc_ep_test(sc, SE_FL_ERROR)) {
sc->flags |= SC_FL_ERROR;
if (!(sc->flags & SC_FL_EOS))
- sc_report_term_evt(sc, tevt_loc_strm, (sc->flags & SC_FL_EOI ? tevt_type_rcv_err: tevt_type_truncated_rcv_err));
+ sc_report_term_evt(sc, (sc->flags & SC_FL_EOI ? strm_tevt_type_rcv_err: strm_tevt_type_truncated_rcv_err));
ret = 1;
}
if (sc_ep_test(sc, SE_FL_ERROR | SE_FL_ERR_PENDING)) {
oc->flags |= CF_WRITE_EVENT;
BUG_ON(sc_ep_test(sc, SE_FL_EOS|SE_FL_ERROR|SE_FL_ERR_PENDING) == (SE_FL_EOS|SE_FL_ERR_PENDING));
- sc_report_term_evt(sc, tevt_loc_strm, tevt_type_snd_err);
+ sc_report_term_evt(sc, strm_tevt_type_snd_err);
if (sc_ep_test(sc, SE_FL_ERROR))
sc->flags |= SC_FL_ERROR;
return 1;
if (sc_ep_test(sc, SE_FL_ERROR) && !(sc->flags & SC_FL_ERROR)) {
if (!(sc->flags & SC_FL_EOS))
- sc_report_term_evt(sc, tevt_loc_strm, (sc->flags & SC_FL_EOI ? tevt_type_rcv_err: tevt_type_truncated_rcv_err));
+ sc_report_term_evt(sc, (sc->flags & SC_FL_EOI ? strm_tevt_type_rcv_err: strm_tevt_type_truncated_rcv_err));
sc->flags |= SC_FL_ERROR;
}
s->last_entity.ptr = rule;
goto deny;
case ACT_RET_ABRT:
+ stream_report_term_evt(s->scf, strm_tevt_type_intercepted);
s->last_entity.type = STRM_ENTITY_RULE;
s->last_entity.ptr = rule;
goto abort;
_HA_ATOMIC_INC(&sess->fe->fe_counters.denied_req);
if (sess->listener && sess->listener->counters)
_HA_ATOMIC_INC(&sess->listener->counters->denied_req);
+ stream_report_term_evt(s->scf, strm_tevt_type_intercepted);
goto reject;
internal:
_HA_ATOMIC_INC(&sess->listener->counters->internal_errors);
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_INTERNAL;
+ stream_report_term_evt(s->scf, strm_tevt_type_internal_err);
goto reject;
invalid:
_HA_ATOMIC_INC(&sess->fe->fe_counters.failed_req);
if (sess->listener && sess->listener->counters)
_HA_ATOMIC_INC(&sess->listener->counters->failed_req);
+ stream_report_term_evt(s->scf, strm_tevt_type_proto_err);
reject:
sc_must_kill_conn(s->scf);
abort:
// XXX: All errors are handled as intercepted here !
- stream_report_term_evt(s->scf, tevt_loc_strm, tevt_type_intercepted);
req->analysers &= AN_REQ_FLT_END;
s->current_rule = s->current_rule_list = NULL;
req->analyse_exp = s->rules_exp = TICK_ETERNITY;
s->last_entity.ptr = rule;
goto deny;
case ACT_RET_ABRT:
+ stream_report_term_evt(s->scb, strm_tevt_type_intercepted);
s->last_entity.type = STRM_ENTITY_RULE;
s->last_entity.ptr = rule;
goto abort;
_HA_ATOMIC_INC(&s->sess->listener->counters->denied_resp);
if (objt_server(s->target))
_HA_ATOMIC_INC(&__objt_server(s->target)->counters.denied_resp);
+ stream_report_term_evt(s->scb, strm_tevt_type_intercepted);
goto reject;
internal:
_HA_ATOMIC_INC(&__objt_server(s->target)->counters.internal_errors);
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_INTERNAL;
+ stream_report_term_evt(s->scf, strm_tevt_type_internal_err);
goto reject;
invalid:
_HA_ATOMIC_INC(&s->be->be_counters.failed_resp);
if (objt_server(s->target))
_HA_ATOMIC_INC(&__objt_server(s->target)->counters.failed_resp);
+ stream_report_term_evt(s->scf, strm_tevt_type_proto_err);
reject:
sc_must_kill_conn(s->scb);
stream_abort(s);
abort:
- // XXX: All errors are handled as intercepted here !
- stream_report_term_evt(s->scb, tevt_loc_strm, tevt_type_intercepted);
rep->analysers &= AN_RES_FLT_END;
s->current_rule = s->current_rule_list = NULL;
rep->analyse_exp = s->rules_exp = TICK_ETERNITY;