/* set the time of last session on the backend */
static inline void be_set_sess_last(struct proxy *be)
{
- HA_ATOMIC_STORE(&be->be_counters.shared.tg[tgid - 1]->last_sess, ns_to_sec(now_ns));
+ if (be->be_counters.shared.tg[tgid - 1])
+ HA_ATOMIC_STORE(&be->be_counters.shared.tg[tgid - 1]->last_sess, ns_to_sec(now_ns));
}
/* This function returns non-zero if the designated server will be
unsigned long now_seconds = ns_to_sec(now_ns); \
int it; \
\
- for (it = 1; it < global.nbtgroups; it++) { \
+ for (it = 1; (it < global.nbtgroups && scounters[it]); it++) { \
unsigned long cur = HA_ATOMIC_LOAD((type *)((char *)scounters[it] + offset));\
if ((now_seconds - cur) < (now_seconds - last)) \
last = cur; \
uint64_t __ret = 0; \
int it; \
\
- for (it = 0; it < global.nbtgroups; it++) \
+ for (it = 0; (it < global.nbtgroups && scounters[it]); it++) \
__ret += rfunc((type *)((char *)scounters[it] + offset)); \
__ret; \
})
uint64_t __ret = 0; \
int it; \
\
- for (it = 0; it < global.nbtgroups; it++) \
+ for (it = 0; (it < global.nbtgroups && scounters[it]); it++) \
__ret += rfunc(&scounters[it]->elem, arg1, arg2); \
__ret; \
})
/* increase the number of cumulated connections received on the designated frontend */
static inline void proxy_inc_fe_conn_ctr(struct listener *l, struct proxy *fe)
{
- _HA_ATOMIC_INC(&fe->fe_counters.shared.tg[tgid - 1]->cum_conn);
- if (l && l->counters)
+ if (fe->fe_counters.shared.tg[tgid - 1])
+ _HA_ATOMIC_INC(&fe->fe_counters.shared.tg[tgid - 1]->cum_conn);
+ if (l && l->counters && l->counters->shared.tg[tgid - 1])
_HA_ATOMIC_INC(&l->counters->shared.tg[tgid - 1]->cum_conn);
- update_freq_ctr(&fe->fe_counters.shared.tg[tgid - 1]->conn_per_sec, 1);
+ if (fe->fe_counters.shared.tg[tgid - 1])
+ update_freq_ctr(&fe->fe_counters.shared.tg[tgid - 1]->conn_per_sec, 1);
HA_ATOMIC_UPDATE_MAX(&fe->fe_counters.cps_max,
update_freq_ctr(&fe->fe_counters._conn_per_sec, 1));
}
/* increase the number of cumulated connections accepted by the designated frontend */
static inline void proxy_inc_fe_sess_ctr(struct listener *l, struct proxy *fe)
{
-
- _HA_ATOMIC_INC(&fe->fe_counters.shared.tg[tgid - 1]->cum_sess);
- if (l && l->counters)
+ if (fe->fe_counters.shared.tg[tgid - 1])
+ _HA_ATOMIC_INC(&fe->fe_counters.shared.tg[tgid - 1]->cum_sess);
+ if (l && l->counters && l->counters->shared.tg[tgid - 1])
_HA_ATOMIC_INC(&l->counters->shared.tg[tgid - 1]->cum_sess);
- update_freq_ctr(&fe->fe_counters.shared.tg[tgid - 1]->sess_per_sec, 1);
+ if (fe->fe_counters.shared.tg[tgid - 1])
+ update_freq_ctr(&fe->fe_counters.shared.tg[tgid - 1]->sess_per_sec, 1);
HA_ATOMIC_UPDATE_MAX(&fe->fe_counters.sps_max,
update_freq_ctr(&fe->fe_counters._sess_per_sec, 1));
}
http_ver > sizeof(fe->fe_counters.shared.tg[tgid - 1]->cum_sess_ver) / sizeof(*fe->fe_counters.shared.tg[tgid - 1]->cum_sess_ver))
return;
- _HA_ATOMIC_INC(&fe->fe_counters.shared.tg[tgid - 1]->cum_sess_ver[http_ver - 1]);
- if (l && l->counters)
+ if (fe->fe_counters.shared.tg[tgid - 1])
+ _HA_ATOMIC_INC(&fe->fe_counters.shared.tg[tgid - 1]->cum_sess_ver[http_ver - 1]);
+ if (l && l->counters && l->counters->shared.tg[tgid - 1])
_HA_ATOMIC_INC(&l->counters->shared.tg[tgid - 1]->cum_sess_ver[http_ver - 1]);
}
/* increase the number of cumulated streams on the designated backend */
static inline void proxy_inc_be_ctr(struct proxy *be)
{
- _HA_ATOMIC_INC(&be->be_counters.shared.tg[tgid - 1]->cum_sess);
- update_freq_ctr(&be->be_counters.shared.tg[tgid - 1]->sess_per_sec, 1);
+ if (be->be_counters.shared.tg[tgid - 1])
+ _HA_ATOMIC_INC(&be->be_counters.shared.tg[tgid - 1]->cum_sess);
+ if (be->be_counters.shared.tg[tgid - 1])
+ update_freq_ctr(&be->be_counters.shared.tg[tgid - 1]->sess_per_sec, 1);
HA_ATOMIC_UPDATE_MAX(&be->be_counters.sps_max,
update_freq_ctr(&be->be_counters._sess_per_sec, 1));
}
if (http_ver >= sizeof(fe->fe_counters.shared.tg[tgid - 1]->p.http.cum_req) / sizeof(*fe->fe_counters.shared.tg[tgid - 1]->p.http.cum_req))
return;
- _HA_ATOMIC_INC(&fe->fe_counters.shared.tg[tgid - 1]->p.http.cum_req[http_ver]);
- if (l && l->counters)
+ if (fe->fe_counters.shared.tg[tgid - 1])
+ _HA_ATOMIC_INC(&fe->fe_counters.shared.tg[tgid - 1]->p.http.cum_req[http_ver]);
+ if (l && l->counters && l->counters->shared.tg[tgid - 1])
_HA_ATOMIC_INC(&l->counters->shared.tg[tgid - 1]->p.http.cum_req[http_ver]);
- update_freq_ctr(&fe->fe_counters.shared.tg[tgid - 1]->req_per_sec, 1);
+ if (fe->fe_counters.shared.tg[tgid - 1])
+ update_freq_ctr(&fe->fe_counters.shared.tg[tgid - 1]->req_per_sec, 1);
HA_ATOMIC_UPDATE_MAX(&fe->fe_counters.p.http.rps_max,
update_freq_ctr(&fe->fe_counters.p.http._req_per_sec, 1));
}
/* increase the number of cumulated streams on the designated server */
static inline void srv_inc_sess_ctr(struct server *s)
{
- _HA_ATOMIC_INC(&s->counters.shared.tg[tgid - 1]->cum_sess);
- update_freq_ctr(&s->counters.shared.tg[tgid - 1]->sess_per_sec, 1);
+ if (s->counters.shared.tg[tgid - 1]) {
+ _HA_ATOMIC_INC(&s->counters.shared.tg[tgid - 1]->cum_sess);
+ update_freq_ctr(&s->counters.shared.tg[tgid - 1]->sess_per_sec, 1);
+ }
HA_ATOMIC_UPDATE_MAX(&s->counters.sps_max,
update_freq_ctr(&s->counters._sess_per_sec, 1));
}
/* set the time of last session on the designated server */
static inline void srv_set_sess_last(struct server *s)
{
- HA_ATOMIC_STORE(&s->counters.shared.tg[tgid - 1]->last_sess, ns_to_sec(now_ns));
+ if (s->counters.shared.tg[tgid - 1])
+ HA_ATOMIC_STORE(&s->counters.shared.tg[tgid - 1]->last_sess, ns_to_sec(now_ns));
}
/* returns the current server throttle rate between 0 and 100% */
s->flags &= ~(SF_DIRECT | SF_ASSIGNED);
s->scb->state = SC_ST_REQ;
} else {
- if (objt_server(s->target))
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->retries);
- _HA_ATOMIC_INC(&s->be_tgcounters->retries);
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->retries);
s->scb->state = SC_ST_ASS;
}
goto out;
}
else if (srv != prev_srv) {
- _HA_ATOMIC_INC(&s->be_tgcounters->cum_lbconn);
- _HA_ATOMIC_INC(&srv->counters.shared.tg[tgid - 1]->cum_lbconn);
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->cum_lbconn);
+ if (srv->counters.shared.tg[tgid - 1])
+ _HA_ATOMIC_INC(&srv->counters.shared.tg[tgid - 1]->cum_lbconn);
}
stream_set_srv_target(s, srv);
}
s->txn->flags |= TX_CK_DOWN;
}
s->flags |= SF_REDISP;
- _HA_ATOMIC_INC(&prev_srv->counters.shared.tg[tgid - 1]->redispatches);
- _HA_ATOMIC_INC(&s->be_tgcounters->redispatches);
+ if (prev_srv->counters.shared.tg[tgid - 1])
+ _HA_ATOMIC_INC(&prev_srv->counters.shared.tg[tgid - 1]->redispatches);
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->redispatches);
} else {
- _HA_ATOMIC_INC(&prev_srv->counters.shared.tg[tgid - 1]->retries);
- _HA_ATOMIC_INC(&s->be_tgcounters->retries);
+ if (prev_srv->counters.shared.tg[tgid - 1])
+ _HA_ATOMIC_INC(&prev_srv->counters.shared.tg[tgid - 1]->retries);
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->retries);
}
}
}
s->scb->flags |= SC_FL_NOLINGER;
if (s->flags & SF_SRV_REUSED) {
- _HA_ATOMIC_INC(&s->be_tgcounters->reuse);
- if (srv)
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->reuse);
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->reuse);
} else {
- _HA_ATOMIC_INC(&s->be_tgcounters->connect);
- if (srv)
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->connect);
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->connect);
}
s->conn_err_type = STRM_ET_QUEUE_ERR;
}
- _HA_ATOMIC_INC(&s->sv_tgcounters->failed_conns);
- _HA_ATOMIC_INC(&s->be_tgcounters->failed_conns);
+ if (s->sv_tgcounters)
+ _HA_ATOMIC_INC(&s->sv_tgcounters->failed_conns);
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_conns);
return 1;
case SRV_STATUS_NOSRV:
s->conn_err_type = STRM_ET_CONN_ERR;
}
- _HA_ATOMIC_INC(&s->be_tgcounters->failed_conns);
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_conns);
return 1;
case SRV_STATUS_QUEUED:
srv_inc_sess_ctr(srv);
if (srv)
srv_set_sess_last(srv);
- if (srv)
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->failed_conns);
- _HA_ATOMIC_INC(&s->be_tgcounters->failed_conns);
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_conns);
/* release other streams waiting for this server */
if (may_dequeue_tasks(srv, s->be))
srv_inc_sess_ctr(srv);
if (srv)
srv_set_sess_last(srv);
- if (srv)
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->failed_conns);
- _HA_ATOMIC_INC(&s->be_tgcounters->failed_conns);
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_conns);
/* release other streams waiting for this server */
sess_change_server(s, NULL);
/* we may need to know the position in the queue for logging */
pendconn_cond_unlink(s->pend_pos);
- if (srv)
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->failed_conns);
- _HA_ATOMIC_INC(&s->be_tgcounters->failed_conns);
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_conns);
sc_abort(sc);
sc_shutdown(sc);
req->flags |= CF_WRITE_TIMEOUT;
s->conn_err_type = STRM_ET_CONN_ERR;
}
- if (objt_server(s->target))
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->failed_conns);
- _HA_ATOMIC_INC(&s->be_tgcounters->failed_conns);
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_conns);
sess_change_server(s, NULL);
if (may_dequeue_tasks(objt_server(s->target), s->be))
process_srv_queue(objt_server(s->target));
if (!s->conn_err_type)
s->conn_err_type = STRM_ET_CONN_OTHER;
- if (objt_server(s->target))
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->internal_errors);
- _HA_ATOMIC_INC(&s->be_tgcounters->internal_errors);
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->internal_errors);
sess_change_server(s, NULL);
if (may_dequeue_tasks(objt_server(s->target), s->be))
process_srv_queue(objt_server(s->target));
if (s->txn->flags & TX_CACHE_IGNORE)
return ACT_RET_CONT;
- if (px == strm_fe(s))
- _HA_ATOMIC_INC(&px->fe_counters.shared.tg[tgid - 1]->p.http.cache_lookups);
- else
- _HA_ATOMIC_INC(&px->be_counters.shared.tg[tgid - 1]->p.http.cache_lookups);
+ if (px == strm_fe(s)) {
+ if (px->fe_counters.shared.tg[tgid - 1])
+ _HA_ATOMIC_INC(&px->fe_counters.shared.tg[tgid - 1]->p.http.cache_lookups);
+ }
+ else {
+ if (px->be_counters.shared.tg[tgid - 1])
+ _HA_ATOMIC_INC(&px->be_counters.shared.tg[tgid - 1]->p.http.cache_lookups);
+ }
cache_tree = get_cache_tree_from_hash(cache, read_u32(s->txn->cache_hash));
ctx->send_notmodified =
should_send_notmodified_response(cache, htxbuf(&s->req.buf), res);
- if (px == strm_fe(s))
- _HA_ATOMIC_INC(&px->fe_counters.shared.tg[tgid - 1]->p.http.cache_hits);
- else
- _HA_ATOMIC_INC(&px->be_counters.shared.tg[tgid - 1]->p.http.cache_hits);
+ if (px == strm_fe(s)) {
+ if (px->fe_counters.shared.tg[tgid - 1])
+ _HA_ATOMIC_INC(&px->fe_counters.shared.tg[tgid - 1]->p.http.cache_hits);
+ }
+ else {
+ if (px->be_counters.shared.tg[tgid - 1])
+ _HA_ATOMIC_INC(&px->be_counters.shared.tg[tgid - 1]->p.http.cache_hits);
+ }
return ACT_RET_CONT;
} else {
s->target = NULL;
if ((!(check->state & CHK_ST_AGENT) ||
(check->status >= HCHK_STATUS_L57DATA)) &&
(check->health > 0)) {
- _HA_ATOMIC_INC(&s->counters.shared.tg[tgid - 1]->failed_checks);
+ if (s->counters.shared.tg[tgid - 1])
+ _HA_ATOMIC_INC(&s->counters.shared.tg[tgid - 1]->failed_checks);
report = 1;
check->health--;
if (check->health < check->rise)
HA_SPIN_UNLOCK(SERVER_LOCK, &s->lock);
HA_ATOMIC_STORE(&s->consecutive_errors, 0);
- _HA_ATOMIC_INC(&s->counters.shared.tg[tgid - 1]->failed_hana);
+ if (s->counters.shared.tg[tgid - 1])
+ _HA_ATOMIC_INC(&s->counters.shared.tg[tgid - 1]->failed_hana);
if (s->check.fastinter) {
/* timer might need to be advanced, it might also already be
goto end;
rewrite_err:
- _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_rewrites);
- _HA_ATOMIC_INC(&s->be_tgcounters->failed_rewrites);
- if (sess->listener && sess->listener->counters)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_rewrites);
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_rewrites);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->failed_rewrites);
- if (objt_server(s->target))
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->failed_rewrites);
hdr_rule_err:
node = ebpt_first(&hdr_rules);
if (st->comp_ctx[dir] && st->comp_ctx[dir]->cur_lvl > 0) {
update_freq_ctr(&global.comp_bps_in, consumed);
- _HA_ATOMIC_ADD(&s->sess->fe_tgcounters->comp_in[dir], consumed);
- _HA_ATOMIC_ADD(&s->be_tgcounters->comp_in[dir], consumed);
+ if (s->sess->fe_tgcounters) {
+ _HA_ATOMIC_ADD(&s->sess->fe_tgcounters->comp_in[dir], consumed);
+ _HA_ATOMIC_ADD(&s->sess->fe_tgcounters->comp_out[dir], to_forward);
+ }
+ if (s->be_tgcounters) {
+ _HA_ATOMIC_ADD(&s->be_tgcounters->comp_in[dir], consumed);
+ _HA_ATOMIC_ADD(&s->be_tgcounters->comp_out[dir], to_forward);
+ }
update_freq_ctr(&global.comp_bps_out, to_forward);
- _HA_ATOMIC_ADD(&s->sess->fe_tgcounters->comp_out[dir], to_forward);
- _HA_ATOMIC_ADD(&s->be_tgcounters->comp_out[dir], to_forward);
} else {
- _HA_ATOMIC_ADD(&s->sess->fe_tgcounters->comp_byp[dir], consumed);
- _HA_ATOMIC_ADD(&s->be_tgcounters->comp_byp[dir], consumed);
+ if (s->sess->fe_tgcounters)
+ _HA_ATOMIC_ADD(&s->sess->fe_tgcounters->comp_byp[dir], consumed);
+ if (s->be_tgcounters)
+ _HA_ATOMIC_ADD(&s->be_tgcounters->comp_byp[dir], consumed);
}
return to_forward;
if (!(msg->chn->flags & CF_ISRESP) || !st || !st->comp_algo[COMP_DIR_RES])
goto end;
- if (strm_fe(s)->mode == PR_MODE_HTTP)
+ if (strm_fe(s)->mode == PR_MODE_HTTP && s->sess->fe_tgcounters)
_HA_ATOMIC_INC(&s->sess->fe_tgcounters->p.http.comp_rsp);
- if ((s->flags & SF_BE_ASSIGNED) && (s->be->mode == PR_MODE_HTTP))
+ if ((s->flags & SF_BE_ASSIGNED) && (s->be->mode == PR_MODE_HTTP) &&
+ s->be_tgcounters)
_HA_ATOMIC_INC(&s->be_tgcounters->p.http.comp_rsp);
end:
return 1;
if (htxn->dir == SMP_OPT_DIR_REQ) {
/* let's log the request time */
s->logs.request_ts = now_ns;
- if (s->sess->fe == s->be) /* report it if the request was intercepted by the frontend */
+ /* report it if the request was intercepted by the frontend */
+ if (s->sess->fe == s->be && s->sess->fe_tgcounters)
_HA_ATOMIC_INC(&s->sess->fe_tgcounters->intercepted_req);
}
goto leave;
fail_rewrite:
- _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_rewrites);
- if (s->flags & SF_BE_ASSIGNED)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_rewrites);
+ if ((s->flags & SF_BE_ASSIGNED) && s->be_tgcounters)
_HA_ATOMIC_INC(&s->be_tgcounters->failed_rewrites);
- if (sess->listener && sess->listener->counters)
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->failed_rewrites);
- if (objt_server(s->target))
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->failed_rewrites);
if (!(s->txn->req.flags & HTTP_MSGF_SOFT_RW)) {
goto leave;
fail_rewrite:
- _HA_ATOMIC_ADD(&sess->fe_tgcounters->failed_rewrites, 1);
- if (s->flags & SF_BE_ASSIGNED)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_ADD(&sess->fe_tgcounters->failed_rewrites, 1);
+ if ((s->flags & SF_BE_ASSIGNED) && s->be_tgcounters)
_HA_ATOMIC_ADD(&s->be_tgcounters->failed_rewrites, 1);
- if (sess->listener && sess->listener->counters)
+ if (sess->li_tgcounters)
_HA_ATOMIC_ADD(&sess->li_tgcounters->failed_rewrites, 1);
- if (objt_server(s->target))
+ if (s->sv_tgcounters)
_HA_ATOMIC_ADD(&s->sv_tgcounters->failed_rewrites, 1);
if (!(s->txn->req.flags & HTTP_MSGF_SOFT_RW)) {
goto leave;
fail_rewrite:
- _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_rewrites);
- if (s->flags & SF_BE_ASSIGNED)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_rewrites);
+ if ((s->flags & SF_BE_ASSIGNED) && s->be_tgcounters)
_HA_ATOMIC_INC(&s->be_tgcounters->failed_rewrites);
- if (sess->listener && sess->listener->counters)
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->failed_rewrites);
- if (objt_server(s->target))
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->failed_rewrites);
if (!(s->txn->req.flags & HTTP_MSGF_SOFT_RW)) {
struct session *sess, struct stream *s, int flags)
{
if (http_res_set_status(rule->arg.http.i, rule->arg.http.str, s) == -1) {
- _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_rewrites);
- if (s->flags & SF_BE_ASSIGNED)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_rewrites);
+ if ((s->flags & SF_BE_ASSIGNED) && s->be_tgcounters)
_HA_ATOMIC_INC(&s->be_tgcounters->failed_rewrites);
- if (sess->listener && sess->listener->counters)
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->failed_rewrites);
- if (objt_server(s->target))
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->failed_rewrites);
if (!(s->txn->req.flags & HTTP_MSGF_SOFT_RW)) {
s->req.analysers &= AN_REQ_FLT_END;
s->res.analysers &= AN_RES_FLT_END;
- _HA_ATOMIC_INC(&s->be_tgcounters->denied_req);
- _HA_ATOMIC_INC(&sess->fe_tgcounters->denied_req);
- if (sess->listener && sess->listener->counters)
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->denied_req);
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->denied_req);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->denied_req);
if (!(s->flags & SF_ERR_MASK))
s->logs.request_ts = now_ns;
req->analysers &= AN_REQ_FLT_END;
- if (s->sess->fe == s->be) /* report it if the request was intercepted by the frontend */
+ /* report it if the request was intercepted by the frontend */
+ if (s->sess->fe == s->be && s->sess->fe_tgcounters)
_HA_ATOMIC_INC(&s->sess->fe_tgcounters->intercepted_req);
if (!(s->flags & SF_ERR_MASK))
goto leave;
fail_rewrite:
- _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_rewrites);
- if (s->flags & SF_BE_ASSIGNED)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_rewrites);
+ if ((s->flags & SF_BE_ASSIGNED) && s->be_tgcounters)
_HA_ATOMIC_INC(&s->be_tgcounters->failed_rewrites);
- if (sess->listener && sess->listener->counters)
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->failed_rewrites);
- if (objt_server(s->target))
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->failed_rewrites);
if (!(msg->flags & HTTP_MSGF_SOFT_RW)) {
goto leave;
fail_rewrite:
- _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_rewrites);
- if (s->flags & SF_BE_ASSIGNED)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_rewrites);
+ if ((s->flags & SF_BE_ASSIGNED) && s->be_tgcounters)
_HA_ATOMIC_INC(&s->be_tgcounters->failed_rewrites);
- if (sess->listener && sess->listener->counters)
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->failed_rewrites);
- if (objt_server(s->target))
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->failed_rewrites);
if (!(msg->flags & HTTP_MSGF_SOFT_RW)) {
s->logs.request_ts = now_ns;
req->analysers &= AN_REQ_FLT_END;
- if (s->sess->fe == s->be) /* report it if the request was intercepted by the frontend */
+ /* report it if the request was intercepted by the frontend */
+ if (s->sess->fe == s->be && s->sess->fe_tgcounters)
_HA_ATOMIC_INC(&s->sess->fe_tgcounters->intercepted_req);
}
struct acl_cond *cond;
s->flags |= SF_MONITOR;
- _HA_ATOMIC_INC(&sess->fe_tgcounters->intercepted_req);
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->intercepted_req);
/* Check if we want to fail this monitor request or not */
list_for_each_entry(cond, &sess->fe->mon_fail_cond, list) {
txn->status = 500;
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_INTERNAL;
- _HA_ATOMIC_INC(&sess->fe_tgcounters->internal_errors);
- if (sess->listener && sess->listener->counters)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->internal_errors);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->internal_errors);
stream_report_term_evt(s->scb, strm_tevt_type_internal_err);
goto return_prx_cond;
return_bad_req:
txn->status = 400;
- _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_req);
- if (sess->listener && sess->listener->counters)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_req);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->failed_req);
stream_report_term_evt(s->scb, strm_tevt_type_proto_err);
/* fall through */
/* Proceed with the applets now. */
if (unlikely(objt_applet(s->target))) {
- if (sess->fe == s->be) /* report it if the request was intercepted by the frontend */
+ /* report it if the request was intercepted by the frontend */
+ if (sess->fe == s->be && sess->fe_tgcounters)
_HA_ATOMIC_INC(&sess->fe_tgcounters->intercepted_req);
if (http_handle_expect_hdr(s, htx, msg) == -1)
if (!req->analyse_exp)
req->analyse_exp = tick_add(now_ms, 0);
stream_inc_http_err_ctr(s);
- _HA_ATOMIC_INC(&sess->fe_tgcounters->denied_req);
- if (s->flags & SF_BE_ASSIGNED)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->denied_req);
+ if ((s->flags & SF_BE_ASSIGNED) && s->be_tgcounters)
_HA_ATOMIC_INC(&s->be_tgcounters->denied_req);
- if (sess->listener && sess->listener->counters)
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->denied_req);
stream_report_term_evt(s->scf, strm_tevt_type_intercepted);
goto done_without_exp;
s->logs.request_ts = now_ns;
stream_inc_http_err_ctr(s);
- _HA_ATOMIC_INC(&sess->fe_tgcounters->denied_req);
- if (s->flags & SF_BE_ASSIGNED)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->denied_req);
+ if ((s->flags & SF_BE_ASSIGNED) && s->be_tgcounters)
_HA_ATOMIC_INC(&s->be_tgcounters->denied_req);
- if (sess->listener && sess->listener->counters)
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->denied_req);
stream_report_term_evt(s->scf, strm_tevt_type_intercepted);
goto return_prx_err;
return_fail_rewrite:
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_PRXCOND;
- _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_rewrites);
- if (s->flags & SF_BE_ASSIGNED)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_rewrites);
+ if ((s->flags & SF_BE_ASSIGNED) && s->be_tgcounters)
_HA_ATOMIC_INC(&s->be_tgcounters->failed_rewrites);
- if (sess->listener && sess->listener->counters)
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->failed_rewrites);
- if (objt_server(s->target))
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->failed_rewrites);
/* fall through */
txn->status = 500;
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_INTERNAL;
- _HA_ATOMIC_INC(&sess->fe_tgcounters->internal_errors);
- if (s->flags & SF_BE_ASSIGNED)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->internal_errors);
+ if ((s->flags & SF_BE_ASSIGNED) && s->be_tgcounters)
_HA_ATOMIC_INC(&s->be_tgcounters->internal_errors);
- if (sess->listener && sess->listener->counters)
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->internal_errors);
stream_report_term_evt(s->scf, strm_tevt_type_internal_err);
goto return_prx_err;
return_bad_req:
txn->status = 400;
- _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_req);
- if (sess->listener && sess->listener->counters)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_req);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->failed_req);
stream_report_term_evt(s->scf, strm_tevt_type_proto_err);
/* fall through */
return_fail_rewrite:
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_PRXCOND;
- _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_rewrites);
- if (s->flags & SF_BE_ASSIGNED)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_rewrites);
+ if ((s->flags & SF_BE_ASSIGNED) && s->be_tgcounters)
_HA_ATOMIC_INC(&s->be_tgcounters->failed_rewrites);
- if (sess->listener && sess->listener->counters)
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->failed_rewrites);
- if (objt_server(s->target))
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->failed_rewrites);
/* fall through */
txn->status = 500;
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_INTERNAL;
- _HA_ATOMIC_INC(&sess->fe_tgcounters->internal_errors);
- if (s->flags & SF_BE_ASSIGNED)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->internal_errors);
+ if ((s->flags & SF_BE_ASSIGNED) && s->be_tgcounters)
_HA_ATOMIC_INC(&s->be_tgcounters->internal_errors);
- if (sess->listener && sess->listener->counters)
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->internal_errors);
stream_report_term_evt(s->scf, strm_tevt_type_internal_err);
txn->status = 500;
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_INTERNAL;
- _HA_ATOMIC_INC(&sess->fe_tgcounters->internal_errors);
- if (s->flags & SF_BE_ASSIGNED)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->internal_errors);
+ if ((s->flags & SF_BE_ASSIGNED) && s->be_tgcounters)
_HA_ATOMIC_INC(&s->be_tgcounters->internal_errors);
- if (sess->listener && sess->listener->counters)
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->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 */
txn->status = 400;
- _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_req);
- if (sess->listener && sess->listener->counters)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_req);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->failed_req);
stream_report_term_evt(s->scf, strm_tevt_type_proto_err);
/* fall through */
return 0;
return_cli_abort:
- _HA_ATOMIC_INC(&sess->fe_tgcounters->cli_aborts);
- _HA_ATOMIC_INC(&s->be_tgcounters->cli_aborts);
- if (sess->listener && sess->listener->counters)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->cli_aborts);
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->cli_aborts);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->cli_aborts);
- if (objt_server(s->target))
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->cli_aborts);
if (!(s->flags & SF_ERR_MASK))
s->flags |= ((req->flags & CF_READ_TIMEOUT) ? SF_ERR_CLITO : SF_ERR_CLICL);
goto return_prx_cond;
return_srv_abort:
- _HA_ATOMIC_INC(&sess->fe_tgcounters->srv_aborts);
- _HA_ATOMIC_INC(&s->be_tgcounters->srv_aborts);
- if (sess->listener && sess->listener->counters)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->srv_aborts);
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->srv_aborts);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->srv_aborts);
- if (objt_server(s->target))
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->srv_aborts);
if (!(s->flags & SF_ERR_MASK))
s->flags |= ((req->flags & CF_WRITE_TIMEOUT) ? SF_ERR_SRVTO : SF_ERR_SRVCL);
return_int_err:
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_INTERNAL;
- _HA_ATOMIC_INC(&sess->fe_tgcounters->internal_errors);
- _HA_ATOMIC_INC(&s->be_tgcounters->internal_errors);
- if (sess->listener && sess->listener->counters)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->internal_errors);
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->internal_errors);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->internal_errors);
- if (objt_server(s->target))
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->internal_errors);
stream_report_term_evt(s->scf, strm_tevt_type_internal_err);
status = 500;
goto return_prx_cond;
return_bad_req:
- _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_req);
- if (sess->listener && sess->listener->counters)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_req);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->failed_req);
stream_report_term_evt(s->scf, strm_tevt_type_proto_err);
status = 400;
s->flags &= ~SF_CURR_SESS;
_HA_ATOMIC_DEC(&__objt_server(s->target)->cur_sess);
}
- _HA_ATOMIC_INC(&s->sv_tgcounters->retries);
+ if (s->sv_tgcounters)
+ _HA_ATOMIC_INC(&s->sv_tgcounters->retries);
}
- _HA_ATOMIC_INC(&s->be_tgcounters->retries);
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->retries);
req = &s->req;
res = &s->res;
if (s->flags & SF_SRV_REUSED)
goto abort_keep_alive;
- _HA_ATOMIC_INC(&s->be_tgcounters->failed_resp);
- if (objt_server(s->target))
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_resp);
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->failed_resp);
/* if the server refused the early data, just send a 425 */
return 0;
}
}
- _HA_ATOMIC_INC(&s->be_tgcounters->failed_resp);
- if (objt_server(s->target))
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_resp);
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->failed_resp);
txn->status = 504;
/* 3: client abort with an abortonclose */
else if ((s->scb->flags & (SC_FL_EOS|SC_FL_ABRT_DONE)) && (s->scb->flags & SC_FL_SHUT_DONE) &&
(s->scf->flags & (SC_FL_EOS|SC_FL_ABRT_DONE))) {
- _HA_ATOMIC_INC(&sess->fe_tgcounters->cli_aborts);
- _HA_ATOMIC_INC(&s->be_tgcounters->cli_aborts);
- if (sess->listener && sess->listener->counters)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->cli_aborts);
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->cli_aborts);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->cli_aborts);
- if (objt_server(s->target))
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->cli_aborts);
txn->status = 400;
if (s->flags & SF_SRV_REUSED)
goto abort_keep_alive;
- _HA_ATOMIC_INC(&s->be_tgcounters->failed_resp);
- if (objt_server(s->target))
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_resp);
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->failed_resp);
txn->status = 502;
if (s->flags & SF_SRV_REUSED)
goto abort_keep_alive;
- _HA_ATOMIC_INC(&s->be_tgcounters->failed_resp);
- if (objt_server(s->target))
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_resp);
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->failed_resp);
rep->analysers &= AN_RES_FLT_END;
if (http_status_matches(http_fail_status_codes, txn->status))
stream_inc_http_fail_ctr(s);
- if (objt_server(s->target)) {
+ if (s->sv_tgcounters) {
n = txn->status / 100;
if (n < 1 || n > 5)
n = 0;
return 1;
return_int_err:
- _HA_ATOMIC_INC(&sess->fe_tgcounters->internal_errors);
- _HA_ATOMIC_INC(&s->be_tgcounters->internal_errors);
- if (sess->listener && sess->listener->counters)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->internal_errors);
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->internal_errors);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->internal_errors);
- if (objt_server(s->target))
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->internal_errors);
txn->status = 500;
if (!(s->flags & SF_ERR_MASK))
return 0;
}
- _HA_ATOMIC_INC(&s->be_tgcounters->failed_resp);
- if (objt_server(s->target))
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_resp);
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->failed_resp);
txn->status = 502;
return 1;
deny:
- _HA_ATOMIC_INC(&sess->fe_tgcounters->denied_resp);
- _HA_ATOMIC_INC(&s->be_tgcounters->denied_resp);
- if (sess->listener && sess->listener->counters)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->denied_resp);
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->denied_resp);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->denied_resp);
- if (objt_server(s->target))
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->denied_resp);
stream_report_term_evt(s->scb, strm_tevt_type_intercepted);
goto return_prx_err;
return_fail_rewrite:
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_PRXCOND;
- _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_rewrites);
- _HA_ATOMIC_INC(&s->be_tgcounters->failed_rewrites);
- if (sess->listener && sess->listener->counters)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_rewrites);
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_rewrites);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->failed_rewrites);
- if (objt_server(s->target))
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->failed_rewrites);
/* fall through */
txn->status = 500;
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_INTERNAL;
- _HA_ATOMIC_INC(&sess->fe_tgcounters->internal_errors);
- _HA_ATOMIC_INC(&s->be_tgcounters->internal_errors);
- if (sess->listener && sess->listener->counters)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->internal_errors);
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->internal_errors);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->internal_errors);
- if (objt_server(s->target))
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->internal_errors);
stream_report_term_evt(s->scb, strm_tevt_type_internal_err);
goto return_prx_err;
s->logs.t_data = -1; /* was not a valid response */
txn->status = 502;
stream_inc_http_fail_ctr(s);
- _HA_ATOMIC_INC(&s->be_tgcounters->failed_resp);
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_resp);
if (objt_server(s->target)) {
- _HA_ATOMIC_INC(&s->sv_tgcounters->failed_resp);
+ if (s->sv_tgcounters)
+ _HA_ATOMIC_INC(&s->sv_tgcounters->failed_resp);
health_adjust(__objt_server(s->target), HANA_STATUS_HTTP_RSP);
}
stream_report_term_evt(s->scb, strm_tevt_type_proto_err);
return 0;
return_srv_abort:
- _HA_ATOMIC_INC(&sess->fe_tgcounters->srv_aborts);
- _HA_ATOMIC_INC(&s->be_tgcounters->srv_aborts);
- if (sess->listener && sess->listener->counters)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->srv_aborts);
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->srv_aborts);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->srv_aborts);
- if (objt_server(s->target))
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->srv_aborts);
stream_inc_http_fail_ctr(s);
if (!(s->flags & SF_ERR_MASK))
goto return_error;
return_cli_abort:
- _HA_ATOMIC_INC(&sess->fe_tgcounters->cli_aborts);
- _HA_ATOMIC_INC(&s->be_tgcounters->cli_aborts);
- if (sess->listener && sess->listener->counters)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->cli_aborts);
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->cli_aborts);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->cli_aborts);
- if (objt_server(s->target))
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->cli_aborts);
if (!(s->flags & SF_ERR_MASK))
s->flags |= ((res->flags & CF_WRITE_TIMEOUT) ? SF_ERR_CLITO : SF_ERR_CLICL);
goto return_error;
return_int_err:
- _HA_ATOMIC_INC(&sess->fe_tgcounters->internal_errors);
- _HA_ATOMIC_INC(&s->be_tgcounters->internal_errors);
- if (sess->listener && sess->listener->counters)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->internal_errors);
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->internal_errors);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->internal_errors);
- if (objt_server(s->target))
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->internal_errors);
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_INTERNAL;
goto return_error;
return_bad_res:
- _HA_ATOMIC_INC(&s->be_tgcounters->failed_resp);
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_resp);
if (objt_server(s->target)) {
- _HA_ATOMIC_INC(&s->sv_tgcounters->failed_resp);
+ if (s->sv_tgcounters)
+ _HA_ATOMIC_INC(&s->sv_tgcounters->failed_resp);
health_adjust(__objt_server(s->target), HANA_STATUS_HTTP_RSP);
}
stream_inc_http_fail_ctr(s);
s->logs.request_ts = now_ns;
req->analysers &= AN_REQ_FLT_END;
- if (s->sess->fe == s->be) /* report it if the request was intercepted by the frontend */
+ /* report it if the request was intercepted by the frontend */
+ if (s->sess->fe == s->be && s->sess->fe_tgcounters)
_HA_ATOMIC_INC(&s->sess->fe_tgcounters->intercepted_req);
}
txn->status = 408;
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_CLITO;
- _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_req);
- if (sess->listener && sess->listener->counters)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_req);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->failed_req);
goto abort;
int max = 0;
int it;
- for (it = 0; it < global.nbtgroups; it++)
+ for (it = 0; (it < global.nbtgroups && p->fe_counters.shared.tg[it]); it++)
max += freq_ctr_remain(&p->fe_counters.shared.tg[it]->sess_per_sec, p->fe_sps_lim, 0);
if (unlikely(!max)) {
return;
parse_error:
- if (l->counters)
+ if (s->sess->li_tgcounters)
_HA_ATOMIC_INC(&s->sess->li_tgcounters->failed_req);
- _HA_ATOMIC_INC(&s->sess->fe_tgcounters->failed_req);
+ if (s->sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&s->sess->fe_tgcounters->failed_req);
goto error;
cli_abort:
- if (l->counters)
+ if (s->sess->li_tgcounters)
_HA_ATOMIC_INC(&s->sess->li_tgcounters->cli_aborts);
- _HA_ATOMIC_INC(&s->sess->fe_tgcounters->cli_aborts);
+ if (s->sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&s->sess->fe_tgcounters->cli_aborts);
error:
applet_set_eos(appctx);
}
session_inc_http_req_ctr(sess);
proxy_inc_fe_req_ctr(sess->listener, sess->fe, 1);
- _HA_ATOMIC_INC(&sess->fe_tgcounters->p.http.rsp[5]);
- _HA_ATOMIC_INC(&sess->fe_tgcounters->internal_errors);
- if (sess->listener && sess->listener->counters)
+ if (sess->fe_tgcounters) {
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->p.http.rsp[5]);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->internal_errors);
+ }
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->internal_errors);
h1c->errcode = 500;
session_inc_http_req_ctr(sess);
session_inc_http_err_ctr(sess);
proxy_inc_fe_req_ctr(sess->listener, sess->fe, 1);
- _HA_ATOMIC_INC(&sess->fe_tgcounters->p.http.rsp[4]);
- _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_req);
- if (sess->listener && sess->listener->counters)
+ if (sess->fe_tgcounters) {
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->p.http.rsp[4]);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_req);
+ }
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->failed_req);
if (!h1c->errcode)
session_inc_http_req_ctr(sess);
proxy_inc_fe_req_ctr(sess->listener, sess->fe, 1);
- _HA_ATOMIC_INC(&sess->fe_tgcounters->p.http.rsp[4]);
- _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_req);
- if (sess->listener && sess->listener->counters)
+ if (sess->fe_tgcounters) {
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->p.http.rsp[4]);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_req);
+ }
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->failed_req);
h1c->errcode = 501;
session_inc_http_req_ctr(sess);
proxy_inc_fe_req_ctr(sess->listener, sess->fe, 1);
- _HA_ATOMIC_INC(&sess->fe_tgcounters->p.http.rsp[4]);
- _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_req);
- if (sess->listener && sess->listener->counters)
+ if (sess->fe_tgcounters) {
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->p.http.rsp[4]);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_req);
+ }
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->failed_req);
h1c->errcode = 408;
}
else if (s->cur_state == SRV_ST_STOPPED) {
/* server was up and is currently down */
- HA_ATOMIC_INC(&s->counters.shared.tg[tgid - 1]->down_trans);
+ if (s->counters.shared.tg[tgid - 1])
+ HA_ATOMIC_INC(&s->counters.shared.tg[tgid - 1]->down_trans);
_srv_event_hdl_publish(EVENT_HDL_SUB_SERVER_DOWN, cb_data.common, s);
}
HA_ATOMIC_STORE(&s->proxy->ready_srv, NULL);
s->last_change = ns_to_sec(now_ns);
- HA_ATOMIC_STORE(&s->counters.shared.tg[tgid - 1]->last_state_change, s->last_change);
+ if (s->counters.shared.tg[tgid - 1])
+ HA_ATOMIC_STORE(&s->counters.shared.tg[tgid - 1]->last_state_change, s->last_change);
/* publish the state change */
_srv_event_hdl_prepare_state(&cb_data.state,
if (last_change < ns_to_sec(now_ns)) // ignore negative times
s->proxy->down_time += ns_to_sec(now_ns) - last_change;
s->proxy->last_change = ns_to_sec(now_ns);
- HA_ATOMIC_STORE(&s->proxy->be_counters.shared.tg[tgid - 1]->last_state_change, s->proxy->last_change);
+ if (s->proxy->be_counters.shared.tg[tgid - 1])
+ HA_ATOMIC_STORE(&s->proxy->be_counters.shared.tg[tgid - 1]->last_state_change, s->proxy->last_change);
}
}
}
srv->last_change = ns_to_sec(now_ns) - srv_last_time_change;
- HA_ATOMIC_STORE(&srv->counters.shared.tg[0]->last_state_change, srv->last_change);
+ if (srv->counters.shared.tg[0])
+ HA_ATOMIC_STORE(&srv->counters.shared.tg[0]->last_state_change, srv->last_change);
srv->check.status = srv_check_status;
srv->check.result = srv_check_result;
sess->fe_tgcounters = sess->fe->fe_counters.shared.tg[tgid - 1];
if (sess->listener && sess->listener->counters)
sess->li_tgcounters = sess->listener->counters->shared.tg[tgid - 1];
+ else
+ sess->li_tgcounters = NULL;
TRACE_STATE("new session", SESS_EV_NEW, sess);
}
TRACE_LEAVE(SESS_EV_NEW);
return 0; /* silently ignored fe/be mismatch */
base_off_shared = (char *)px->fe_counters.shared.tg[0];
+ if (!base_off_shared)
+ return 0; // not allocated
+
base_off = (char *)&px->fe_counters;
off = 0;
return 0; /* silently ignored fe/be mismatch */
base_off_shared = (char *)px->be_counters.shared.tg[0];
+ if (!base_off_shared)
+ return 0; // not allocated
+
base_off = (char *)&px->be_counters;
off = 1;
return 0;
base_off_shared = (char *)li->counters->shared.tg[0];
+ if (!base_off_shared)
+ return 0; // not allocated
+
base_off = (char *)li->counters;
off = 0;
srv = __objt_server(node->obj_type);
base_off_shared = (char *)srv->counters.shared.tg[0];
+ if (!base_off_shared)
+ return 0; // not allocated
+
base_off = (char *)&srv->counters;
off = 1;
BUG_ON(curr_obj->type != SHM_STATS_FILE_OBJECT_TYPE_FE);
li = __objt_listener(node->obj_type);
- if (li->counters) // counters are optional for listeners
+ // counters are optional for listeners
+ if (li->counters && li->counters->shared.tg[obj_tgid - 1])
li->counters->shared.tg[obj_tgid - 1] = &curr_obj->data.fe;
break;
}
BUG_ON(curr_obj->type != SHM_STATS_FILE_OBJECT_TYPE_BE);
sv = __objt_server(node->obj_type);
- sv->counters.shared.tg[obj_tgid - 1] = &curr_obj->data.be;
+ if (sv->counters.shared.tg[obj_tgid - 1])
+ sv->counters.shared.tg[obj_tgid - 1] = &curr_obj->data.be;
break;
}
case OBJ_TYPE_PROXY:
struct proxy *px;
px = __objt_proxy(node->obj_type);
- if (curr_obj->type == SHM_STATS_FILE_OBJECT_TYPE_FE)
+ if (curr_obj->type == SHM_STATS_FILE_OBJECT_TYPE_FE &&
+ px->fe_counters.shared.tg[obj_tgid - 1])
px->fe_counters.shared.tg[obj_tgid - 1] = &curr_obj->data.fe;
- else if (curr_obj->type == SHM_STATS_FILE_OBJECT_TYPE_BE)
+ else if (curr_obj->type == SHM_STATS_FILE_OBJECT_TYPE_BE &&
+ px->be_counters.shared.tg[obj_tgid - 1])
px->be_counters.shared.tg[obj_tgid - 1] = &curr_obj->data.be;
else
goto release; // not supported
*/
s->be = sess->fe;
s->be_tgcounters = sess->fe->be_counters.shared.tg[tgid - 1];
+ s->sv_tgcounters = NULL; // default value
s->req_cap = NULL;
s->res_cap = NULL;
bytes = s->req.total - s->logs.bytes_in;
s->logs.bytes_in = s->req.total;
if (bytes) {
- _HA_ATOMIC_ADD(&sess->fe_tgcounters->bytes_in, bytes);
- _HA_ATOMIC_ADD(&s->be_tgcounters->bytes_in, bytes);
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_ADD(&sess->fe_tgcounters->bytes_in, bytes);
+ if (s->be_tgcounters)
+ _HA_ATOMIC_ADD(&s->be_tgcounters->bytes_in, bytes);
- if (objt_server(s->target))
+ if (s->sv_tgcounters)
_HA_ATOMIC_ADD(&s->sv_tgcounters->bytes_in, bytes);
- if (sess->listener && sess->listener->counters)
+ if (sess->li_tgcounters)
_HA_ATOMIC_ADD(&sess->li_tgcounters->bytes_in, bytes);
for (i = 0; i < global.tune.nb_stk_ctr; i++) {
bytes = s->res.total - s->logs.bytes_out;
s->logs.bytes_out = s->res.total;
if (bytes) {
- _HA_ATOMIC_ADD(&sess->fe_tgcounters->bytes_out, bytes);
- _HA_ATOMIC_ADD(&s->be_tgcounters->bytes_out, bytes);
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_ADD(&sess->fe_tgcounters->bytes_out, bytes);
+ if (s->be_tgcounters)
+ _HA_ATOMIC_ADD(&s->be_tgcounters->bytes_out, bytes);
- if (objt_server(s->target))
+ if (s->sv_tgcounters)
_HA_ATOMIC_ADD(&s->sv_tgcounters->bytes_out, bytes);
- if (sess->listener && sess->listener->counters)
+ if (sess->li_tgcounters)
_HA_ATOMIC_ADD(&sess->li_tgcounters->bytes_out, bytes);
for (i = 0; i < global.tune.nb_stk_ctr; i++) {
if (!(s->flags & SF_FINST_MASK)) {
if (s->scb->state == SC_ST_INI) {
/* anything before REQ in fact */
- _HA_ATOMIC_INC(&s->sess->fe_tgcounters->failed_req);
- if (strm_li(s) && strm_li(s)->counters)
+ if (s->sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&s->sess->fe_tgcounters->failed_req);
+ if (s->sess->li_tgcounters)
_HA_ATOMIC_INC(&s->sess->li_tgcounters->failed_req);
s->flags |= SF_FINST_R;
appctx = __sc_appctx(s->scb);
if (rule->from != ACT_F_HTTP_REQ) {
- if (sess->fe == s->be) /* report it if the request was intercepted by the frontend */
+ /* report it if the request was intercepted by the frontend */
+ if (sess->fe == s->be && sess->fe_tgcounters)
_HA_ATOMIC_INC(&sess->fe_tgcounters->intercepted_req);
/* The flag SF_ASSIGNED prevent from server assignment. */
sc_shutdown(scf);
if (!(req->analysers) && !(res->analysers)) {
COUNT_IF(1, "Report a client abort (no analysers)");
- _HA_ATOMIC_INC(&s->be_tgcounters->cli_aborts);
- _HA_ATOMIC_INC(&sess->fe_tgcounters->cli_aborts);
- if (sess->listener && sess->listener->counters)
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->cli_aborts);
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->cli_aborts);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->cli_aborts);
- if (srv)
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->cli_aborts);
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_CLICL;
if (sc_state_in(scb->state, SC_SB_EST|SC_SB_DIS)) {
sc_abort(scb);
sc_shutdown(scb);
- _HA_ATOMIC_INC(&s->be_tgcounters->failed_resp);
- if (srv)
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_resp);
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->failed_resp);
if (!(req->analysers) && !(res->analysers)) {
COUNT_IF(1, "Report a client abort (no analysers)");
- _HA_ATOMIC_INC(&s->be_tgcounters->srv_aborts);
- _HA_ATOMIC_INC(&sess->fe_tgcounters->srv_aborts);
- if (sess->listener && sess->listener->counters)
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->srv_aborts);
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->srv_aborts);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->srv_aborts);
- if (srv)
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->srv_aborts);
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_SRVCL;
req->analysers &= AN_REQ_FLT_END;
channel_auto_close(req);
if (scf->flags & SC_FL_ERROR) {
- _HA_ATOMIC_INC(&s->be_tgcounters->cli_aborts);
- _HA_ATOMIC_INC(&sess->fe_tgcounters->cli_aborts);
- if (sess->listener && sess->listener->counters)
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->cli_aborts);
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->cli_aborts);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->cli_aborts);
- if (srv)
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->cli_aborts);
s->flags |= SF_ERR_CLICL;
COUNT_IF(1, "Report unhandled client error");
}
else if (req->flags & CF_READ_TIMEOUT) {
- _HA_ATOMIC_INC(&s->be_tgcounters->cli_aborts);
- _HA_ATOMIC_INC(&sess->fe_tgcounters->cli_aborts);
- if (sess->listener && sess->listener->counters)
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->cli_aborts);
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->cli_aborts);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->cli_aborts);
- if (srv)
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->cli_aborts);
s->flags |= SF_ERR_CLITO;
COUNT_IF(1, "Report unhandled client timeout (RD)");
}
else {
- _HA_ATOMIC_INC(&s->be_tgcounters->srv_aborts);
- _HA_ATOMIC_INC(&sess->fe_tgcounters->srv_aborts);
- if (sess->listener && sess->listener->counters)
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->srv_aborts);
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->srv_aborts);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->srv_aborts);
- if (srv)
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->srv_aborts);
s->flags |= SF_ERR_SRVTO;
COUNT_IF(1, "Report unhandled server timeout (WR)");
res->analysers &= AN_RES_FLT_END;
channel_auto_close(res);
if (scb->flags & SC_FL_ERROR) {
- _HA_ATOMIC_INC(&s->be_tgcounters->srv_aborts);
- _HA_ATOMIC_INC(&sess->fe_tgcounters->srv_aborts);
- if (sess->listener && sess->listener->counters)
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->srv_aborts);
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->srv_aborts);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->srv_aborts);
- if (srv)
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->srv_aborts);
s->flags |= SF_ERR_SRVCL;
COUNT_IF(1, "Report unhandled server error");
}
else if (res->flags & CF_READ_TIMEOUT) {
- _HA_ATOMIC_INC(&s->be_tgcounters->srv_aborts);
- _HA_ATOMIC_INC(&sess->fe_tgcounters->srv_aborts);
- if (sess->listener && sess->listener->counters)
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->srv_aborts);
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->srv_aborts);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->srv_aborts);
- if (srv)
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->srv_aborts);
s->flags |= SF_ERR_SRVTO;
COUNT_IF(1, "Report unhandled server timeout (RD)");
}
else {
- _HA_ATOMIC_INC(&s->be_tgcounters->cli_aborts);
- _HA_ATOMIC_INC(&sess->fe_tgcounters->cli_aborts);
- if (sess->listener && sess->listener->counters)
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->cli_aborts);
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->cli_aborts);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->cli_aborts);
- if (srv)
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->cli_aborts);
s->flags |= SF_ERR_CLITO;
COUNT_IF(1, "Report unhandled client timeout (WR)");
if (n < 1 || n > 5)
n = 0;
- if (sess->fe->mode == PR_MODE_HTTP) {
+ if (sess->fe->mode == PR_MODE_HTTP && sess->fe_tgcounters) {
_HA_ATOMIC_INC(&sess->fe_tgcounters->p.http.rsp[n]);
}
if ((s->flags & SF_BE_ASSIGNED) &&
- (s->be->mode == PR_MODE_HTTP)) {
+ (s->be->mode == PR_MODE_HTTP) &&
+ s->be_tgcounters) {
_HA_ATOMIC_INC(&s->be_tgcounters->p.http.rsp[n]);
_HA_ATOMIC_INC(&s->be_tgcounters->p.http.cum_req);
}
srv = objt_server(s->target);
if (srv) {
- samples_window = (((s->be->mode == PR_MODE_HTTP) ?
- HA_ATOMIC_LOAD(&s->sv_tgcounters->p.http.cum_req) : HA_ATOMIC_LOAD(&s->sv_tgcounters->cum_lbconn)) > TIME_STATS_SAMPLES) ? TIME_STATS_SAMPLES : 0;
+ if (s->sv_tgcounters)
+ samples_window = (((s->be->mode == PR_MODE_HTTP) ?
+ HA_ATOMIC_LOAD(&s->sv_tgcounters->p.http.cum_req) : HA_ATOMIC_LOAD(&s->sv_tgcounters->cum_lbconn)) > TIME_STATS_SAMPLES) ? TIME_STATS_SAMPLES : 0;
+ else
+ samples_window = 0;
swrate_add_dynamic(&srv->counters.q_time, samples_window, t_queue);
swrate_add_dynamic(&srv->counters.c_time, samples_window, t_connect);
swrate_add_dynamic(&srv->counters.d_time, samples_window, t_data);
HA_ATOMIC_UPDATE_MAX(&srv->counters.dtime_max, t_data);
HA_ATOMIC_UPDATE_MAX(&srv->counters.ttime_max, t_close);
}
- samples_window = (((s->be->mode == PR_MODE_HTTP) ?
- HA_ATOMIC_LOAD(&s->be_tgcounters->p.http.cum_req) : HA_ATOMIC_LOAD(&s->be_tgcounters->cum_lbconn)) > TIME_STATS_SAMPLES) ? TIME_STATS_SAMPLES : 0;
+ if (s->be_tgcounters)
+ samples_window = (((s->be->mode == PR_MODE_HTTP) ?
+ HA_ATOMIC_LOAD(&s->be_tgcounters->p.http.cum_req) : HA_ATOMIC_LOAD(&s->be_tgcounters->cum_lbconn)) > TIME_STATS_SAMPLES) ? TIME_STATS_SAMPLES : 0;
+ else
+ samples_window = 0;
swrate_add_dynamic(&s->be->be_counters.q_time, samples_window, t_queue);
swrate_add_dynamic(&s->be->be_counters.c_time, samples_window, t_connect);
swrate_add_dynamic(&s->be->be_counters.d_time, samples_window, t_data);
stream_abort(strm);
strm->req.analysers &= AN_REQ_FLT_END;
strm->res.analysers &= AN_RES_FLT_END;
- if (strm->flags & SF_BE_ASSIGNED)
+ if ((strm->flags & SF_BE_ASSIGNED) && strm->be_tgcounters)
_HA_ATOMIC_INC(&strm->be_tgcounters->denied_req);
if (!(strm->flags & SF_ERR_MASK))
strm->flags |= SF_ERR_PRXCOND;
strm->flags |= SF_FINST_R;
}
- _HA_ATOMIC_INC(&sess->fe_tgcounters->denied_req);
- if (sess->listener && sess->listener->counters)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->denied_req);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->denied_req);
return ACT_RET_ABRT;
return 0;
deny:
- _HA_ATOMIC_INC(&sess->fe_tgcounters->denied_req);
- if (sess->listener && sess->listener->counters)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->denied_req);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->denied_req);
stream_report_term_evt(s->scf, strm_tevt_type_intercepted);
goto reject;
internal:
- _HA_ATOMIC_INC(&sess->fe_tgcounters->internal_errors);
- if (sess->listener && sess->listener->counters)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->internal_errors);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->internal_errors);
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_INTERNAL;
goto reject;
invalid:
- _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_req);
- if (sess->listener && sess->listener->counters)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_req);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->failed_req);
stream_report_term_evt(s->scf, strm_tevt_type_proto_err);
return 0;
deny:
- _HA_ATOMIC_INC(&s->sess->fe_tgcounters->denied_resp);
- _HA_ATOMIC_INC(&s->be_tgcounters->denied_resp);
- if (s->sess->listener && s->sess->listener->counters)
+ if (s->sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&s->sess->fe_tgcounters->denied_resp);
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->denied_resp);
+ if (s->sess->li_tgcounters)
_HA_ATOMIC_INC(&s->sess->li_tgcounters->denied_resp);
- if (objt_server(s->target))
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->denied_resp);
stream_report_term_evt(s->scb, strm_tevt_type_intercepted);
goto reject;
internal:
- _HA_ATOMIC_INC(&s->sess->fe_tgcounters->internal_errors);
- _HA_ATOMIC_INC(&s->be_tgcounters->internal_errors);
- if (s->sess->listener && s->sess->listener->counters)
+ if (s->sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&s->sess->fe_tgcounters->internal_errors);
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->internal_errors);
+ if (s->sess->li_tgcounters)
_HA_ATOMIC_INC(&s->sess->li_tgcounters->internal_errors);
- if (objt_server(s->target))
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->internal_errors);
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_INTERNAL;
goto reject;
invalid:
- _HA_ATOMIC_INC(&s->be_tgcounters->failed_resp);
- if (objt_server(s->target))
+ if (s->be_tgcounters)
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_resp);
+ if (s->sv_tgcounters)
_HA_ATOMIC_INC(&s->sv_tgcounters->failed_resp);
stream_report_term_evt(s->scf, strm_tevt_type_proto_err);
goto end;
}
else if (rule->action == ACT_ACTION_DENY) {
- _HA_ATOMIC_INC(&sess->fe_tgcounters->denied_conn);
- if (sess->listener && sess->listener->counters)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->denied_conn);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->denied_conn);
result = 0;
goto end;
}
else if (rule->action == ACT_ACTION_DENY) {
- _HA_ATOMIC_INC(&sess->fe_tgcounters->denied_sess);
- if (sess->listener && sess->listener->counters)
+ if (sess->fe_tgcounters)
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->denied_sess);
+ if (sess->li_tgcounters)
_HA_ATOMIC_INC(&sess->li_tgcounters->denied_sess);
result = 0;