struct list priv_conns; /* list of private conns */
struct sockaddr_storage *src; /* source address (pool), when known, otherwise NULL */
struct sockaddr_storage *dst; /* destination address (pool), when known, otherwise NULL */
+ struct fe_counters_shared_tg *fe_tgcounters; /* pointer to current thread group shared frontend counters */
+ struct fe_counters_shared_tg *li_tgcounters; /* pointer to current thread group shared listener counters */
};
/*
int hostname_dn_len; /* size of hostname_dn */
/* 4 unused bytes here, recoverable via packing if needed */
} resolv_ctx; /* context information for DNS resolution */
+ struct be_counters_shared_tg *be_tgcounters; /* pointer to current thread group shared backend counters */
+ struct be_counters_shared_tg *sv_tgcounters; /* pointer to current thread group shared server counters */
};
#endif /* _HAPROXY_STREAM_T_H */
s->scb->state = SC_ST_REQ;
} else {
if (objt_server(s->target))
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->retries);
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->retries);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->retries);
+ _HA_ATOMIC_INC(&s->be_tgcounters->retries);
s->scb->state = SC_ST_ASS;
}
sc->term_evts_log = tevt_report_event(sc->term_evts_log, loc, type);
}
+static inline void stream_set_srv_target(struct stream *s, struct server *srv)
+{
+ s->target = &srv->obj_type;
+ s->sv_tgcounters = srv->counters.shared.tg[tgid - 1];
+}
int stream_set_timeout(struct stream *s, enum act_timeout_name name, int timeout);
void stream_retnclose(struct stream *s, const struct buffer *msg);
list_for_each_entry(conn, &pconns->conn_list, sess_el) {
if (!(conn->flags & CO_FL_WAIT_XPRT)) {
srv = tmpsrv;
- s->target = &srv->obj_type;
+ stream_set_srv_target(s, srv);
if (conn->flags & CO_FL_SESS_IDLE) {
conn->flags &= ~CO_FL_SESS_IDLE;
s->sess->idle_conns--;
goto out;
}
else if (srv != prev_srv) {
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->cum_lbconn);
+ _HA_ATOMIC_INC(&s->be_tgcounters->cum_lbconn);
_HA_ATOMIC_INC(&srv->counters.shared.tg[tgid - 1]->cum_lbconn);
}
- s->target = &srv->obj_type;
+ stream_set_srv_target(s, srv);
}
else if (s->be->options & (PR_O_DISPATCH | PR_O_TRANSP)) {
s->target = &s->be->obj_type;
}
s->flags |= SF_REDISP;
_HA_ATOMIC_INC(&prev_srv->counters.shared.tg[tgid - 1]->redispatches);
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->redispatches);
+ _HA_ATOMIC_INC(&s->be_tgcounters->redispatches);
} else {
_HA_ATOMIC_INC(&prev_srv->counters.shared.tg[tgid - 1]->retries);
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->retries);
+ _HA_ATOMIC_INC(&s->be_tgcounters->retries);
}
}
}
pool_free(pool_head_pendconn, p);
s->flags |= SF_ASSIGNED;
- s->target = &newserv->obj_type;
+ stream_set_srv_target(s, newserv);
+
s->pend_pos = NULL;
sess_change_server(s, newserv);
return SRV_STATUS_OK;
s->scb->flags |= SC_FL_NOLINGER;
if (s->flags & SF_SRV_REUSED) {
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->reuse);
+ _HA_ATOMIC_INC(&s->be_tgcounters->reuse);
if (srv)
- _HA_ATOMIC_INC(&srv->counters.shared.tg[tgid - 1]->reuse);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->reuse);
} else {
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->connect);
+ _HA_ATOMIC_INC(&s->be_tgcounters->connect);
if (srv)
- _HA_ATOMIC_INC(&srv->counters.shared.tg[tgid - 1]->connect);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->connect);
}
err = do_connect_server(s, srv_conn);
s->conn_err_type = STRM_ET_QUEUE_ERR;
}
- _HA_ATOMIC_INC(&srv->counters.shared.tg[tgid - 1]->failed_conns);
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->failed_conns);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->failed_conns);
+ _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->be_counters.shared.tg[tgid - 1]->failed_conns);
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_conns);
return 1;
case SRV_STATUS_QUEUED:
if (srv)
srv_set_sess_last(srv);
if (srv)
- _HA_ATOMIC_INC(&srv->counters.shared.tg[tgid - 1]->failed_conns);
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->failed_conns);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->failed_conns);
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_conns);
/* release other streams waiting for this server */
if (may_dequeue_tasks(srv, s->be))
if (srv)
srv_set_sess_last(srv);
if (srv)
- _HA_ATOMIC_INC(&srv->counters.shared.tg[tgid - 1]->failed_conns);
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->failed_conns);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->failed_conns);
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_conns);
/* release other streams waiting for this server */
sess_change_server(s, NULL);
pendconn_cond_unlink(s->pend_pos);
if (srv)
- _HA_ATOMIC_INC(&srv->counters.shared.tg[tgid - 1]->failed_conns);
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->failed_conns);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->failed_conns);
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_conns);
sc_abort(sc);
sc_shutdown(sc);
req->flags |= CF_WRITE_TIMEOUT;
}
if (objt_server(s->target))
- _HA_ATOMIC_INC(&objt_server(s->target)->counters.shared.tg[tgid - 1]->failed_conns);
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->failed_conns);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->failed_conns);
+ _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));
s->conn_err_type = STRM_ET_CONN_OTHER;
if (objt_server(s->target))
- _HA_ATOMIC_INC(&objt_server(s->target)->counters.shared.tg[tgid - 1]->internal_errors);
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->internal_errors);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->internal_errors);
+ _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 ((srv->cur_state != SRV_ST_STOPPED) || (px->options & PR_O_PERSIST)) {
/* we found the server and it is usable */
s->flags |= SF_DIRECT | SF_ASSIGNED;
- s->target = &srv->obj_type;
+ stream_set_srv_target(s, srv);
break;
}
}
target_pid = s->pcli_next_pid;
/* we can connect now */
s->target = pcli_pid_to_server(target_pid);
+ if (objt_server(s->target))
+ s->sv_tgcounters = __objt_server(s->target)->counters.shared.tg[tgid - 1];
if (!s->target)
goto server_disconnect;
s = appctx_strm(appctx);
s->scb->dst = addr;
s->scb->flags |= (SC_FL_RCV_ONCE|SC_FL_NOLINGER);
- s->target = &ds->dss->srv->obj_type;
+ stream_set_srv_target(s, ds->dss->srv);
s->flags = SF_ASSIGNED;
s->do_log = NULL;
goto end;
rewrite_err:
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->failed_rewrites);
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_rewrites);
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_rewrites);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->failed_rewrites);
if (objt_server(s->target))
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->failed_rewrites);
hdr_rule_err:
node = ebpt_first(&hdr_rules);
while (node) {
if (st->comp_ctx[dir] && st->comp_ctx[dir]->cur_lvl > 0) {
update_freq_ctr(&global.comp_bps_in, consumed);
- _HA_ATOMIC_ADD(&strm_fe(s)->fe_counters.shared.tg[tgid - 1]->comp_in[dir], consumed);
- _HA_ATOMIC_ADD(&s->be->be_counters.shared.tg[tgid - 1]->comp_in[dir], consumed);
+ _HA_ATOMIC_ADD(&s->sess->fe_tgcounters->comp_in[dir], consumed);
+ _HA_ATOMIC_ADD(&s->be_tgcounters->comp_in[dir], consumed);
update_freq_ctr(&global.comp_bps_out, to_forward);
- _HA_ATOMIC_ADD(&strm_fe(s)->fe_counters.shared.tg[tgid - 1]->comp_out[dir], to_forward);
- _HA_ATOMIC_ADD(&s->be->be_counters.shared.tg[tgid - 1]->comp_out[dir], 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(&strm_fe(s)->fe_counters.shared.tg[tgid - 1]->comp_byp[dir], consumed);
- _HA_ATOMIC_ADD(&s->be->be_counters.shared.tg[tgid - 1]->comp_byp[dir], consumed);
+ _HA_ATOMIC_ADD(&s->sess->fe_tgcounters->comp_byp[dir], consumed);
+ _HA_ATOMIC_ADD(&s->be_tgcounters->comp_byp[dir], consumed);
}
return to_forward;
goto end;
if (strm_fe(s)->mode == PR_MODE_HTTP)
- _HA_ATOMIC_INC(&strm_fe(s)->fe_counters.shared.tg[tgid - 1]->p.http.comp_rsp);
+ _HA_ATOMIC_INC(&s->sess->fe_tgcounters->p.http.comp_rsp);
if ((s->flags & SF_BE_ASSIGNED) && (s->be->mode == PR_MODE_HTTP))
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->p.http.comp_rsp);
+ _HA_ATOMIC_INC(&s->be_tgcounters->p.http.comp_rsp);
end:
return 1;
}
/* Force destination server. */
s->flags |= SF_DIRECT | SF_ASSIGNED | SF_BE_ASSIGNED;
- s->target = &csk_ctx->srv->obj_type;
+ stream_set_srv_target(s, csk_ctx->srv);
if (csk_ctx->timeout) {
s->sess->fe->timeout.connect = csk_ctx->timeout;
/* 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 */
- _HA_ATOMIC_INC(&s->sess->fe->fe_counters.shared.tg[tgid - 1]->intercepted_req);
+ _HA_ATOMIC_INC(&s->sess->fe_tgcounters->intercepted_req);
}
done:
goto leave;
fail_rewrite:
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_rewrites);
if (s->flags & SF_BE_ASSIGNED)
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_rewrites);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->failed_rewrites);
if (objt_server(s->target))
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->failed_rewrites);
if (!(s->txn->req.flags & HTTP_MSGF_SOFT_RW)) {
ret = ACT_RET_ERR;
goto leave;
fail_rewrite:
- _HA_ATOMIC_ADD(&sess->fe->fe_counters.shared.tg[tgid - 1]->failed_rewrites, 1);
+ _HA_ATOMIC_ADD(&sess->fe_tgcounters->failed_rewrites, 1);
if (s->flags & SF_BE_ASSIGNED)
- _HA_ATOMIC_ADD(&s->be->be_counters.shared.tg[tgid - 1]->failed_rewrites, 1);
+ _HA_ATOMIC_ADD(&s->be_tgcounters->failed_rewrites, 1);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_ADD(&sess->listener->counters->shared.tg[tgid - 1]->failed_rewrites, 1);
+ _HA_ATOMIC_ADD(&sess->li_tgcounters->failed_rewrites, 1);
if (objt_server(s->target))
- _HA_ATOMIC_ADD(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->failed_rewrites, 1);
+ _HA_ATOMIC_ADD(&s->sv_tgcounters->failed_rewrites, 1);
if (!(s->txn->req.flags & HTTP_MSGF_SOFT_RW)) {
ret = ACT_RET_ERR;
goto leave;
fail_rewrite:
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_rewrites);
if (s->flags & SF_BE_ASSIGNED)
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_rewrites);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->failed_rewrites);
if (objt_server(s->target))
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->failed_rewrites);
if (!(s->txn->req.flags & HTTP_MSGF_SOFT_RW)) {
ret = ACT_RET_ERR;
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->fe_counters.shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_rewrites);
if (s->flags & SF_BE_ASSIGNED)
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_rewrites);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->failed_rewrites);
if (objt_server(s->target))
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->failed_rewrites);
if (!(s->txn->req.flags & HTTP_MSGF_SOFT_RW)) {
if (!(s->flags & SF_ERR_MASK))
s->req.analysers &= AN_REQ_FLT_END;
s->res.analysers &= AN_RES_FLT_END;
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->denied_req);
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->denied_req);
+ _HA_ATOMIC_INC(&s->be_tgcounters->denied_req);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->denied_req);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->denied_req);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->denied_req);
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_PRXCOND;
req->analysers &= AN_REQ_FLT_END;
if (s->sess->fe == s->be) /* report it if the request was intercepted by the frontend */
- _HA_ATOMIC_INC(&s->sess->fe->fe_counters.shared.tg[tgid - 1]->intercepted_req);
+ _HA_ATOMIC_INC(&s->sess->fe_tgcounters->intercepted_req);
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_LOCAL;
goto leave;
fail_rewrite:
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_rewrites);
if (s->flags & SF_BE_ASSIGNED)
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_rewrites);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->failed_rewrites);
if (objt_server(s->target))
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->failed_rewrites);
if (!(msg->flags & HTTP_MSGF_SOFT_RW)) {
ret = ACT_RET_ERR;
goto leave;
fail_rewrite:
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_rewrites);
if (s->flags & SF_BE_ASSIGNED)
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_rewrites);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->failed_rewrites);
if (objt_server(s->target))
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->failed_rewrites);
if (!(msg->flags & HTTP_MSGF_SOFT_RW)) {
ret = ACT_RET_ERR;
req->analysers &= AN_REQ_FLT_END;
if (s->sess->fe == s->be) /* report it if the request was intercepted by the frontend */
- _HA_ATOMIC_INC(&s->sess->fe->fe_counters.shared.tg[tgid - 1]->intercepted_req);
+ _HA_ATOMIC_INC(&s->sess->fe_tgcounters->intercepted_req);
}
return ACT_RET_ABRT;
struct acl_cond *cond;
s->flags |= SF_MONITOR;
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->intercepted_req);
+ _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->fe_counters.shared.tg[tgid - 1]->internal_errors);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->internal_errors);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->internal_errors);
+ _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->fe_counters.shared.tg[tgid - 1]->failed_req);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_req);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->failed_req);
+ _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 */
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->intercepted_req);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->intercepted_req);
if (http_handle_expect_hdr(s, htx, msg) == -1)
goto return_int_err;
if (!req->analyse_exp)
req->analyse_exp = tick_add(now_ms, 0);
stream_inc_http_err_ctr(s);
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->denied_req);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->denied_req);
if (s->flags & SF_BE_ASSIGNED)
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->denied_req);
+ _HA_ATOMIC_INC(&s->be_tgcounters->denied_req);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->denied_req);
+ _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->fe_counters.shared.tg[tgid - 1]->denied_req);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->denied_req);
if (s->flags & SF_BE_ASSIGNED)
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->denied_req);
+ _HA_ATOMIC_INC(&s->be_tgcounters->denied_req);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->denied_req);
+ _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->fe_counters.shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_rewrites);
if (s->flags & SF_BE_ASSIGNED)
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_rewrites);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->failed_rewrites);
if (objt_server(s->target))
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->failed_rewrites);
/* fall through */
return_int_err:
txn->status = 500;
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_INTERNAL;
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->internal_errors);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->internal_errors);
if (s->flags & SF_BE_ASSIGNED)
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->internal_errors);
+ _HA_ATOMIC_INC(&s->be_tgcounters->internal_errors);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->internal_errors);
+ _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->fe_counters.shared.tg[tgid - 1]->failed_req);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_req);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->failed_req);
+ _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->fe_counters.shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_rewrites);
if (s->flags & SF_BE_ASSIGNED)
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_rewrites);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->failed_rewrites);
if (objt_server(s->target))
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->failed_rewrites);
/* fall through */
return_int_err:
txn->status = 500;
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_INTERNAL;
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->internal_errors);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->internal_errors);
if (s->flags & SF_BE_ASSIGNED)
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->internal_errors);
+ _HA_ATOMIC_INC(&s->be_tgcounters->internal_errors);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->internal_errors);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->internal_errors);
stream_report_term_evt(s->scf, strm_tevt_type_internal_err);
http_set_term_flags(s);
txn->status = 500;
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_INTERNAL;
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->internal_errors);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->internal_errors);
if (s->flags & SF_BE_ASSIGNED)
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->internal_errors);
+ _HA_ATOMIC_INC(&s->be_tgcounters->internal_errors);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->internal_errors);
+ _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->fe_counters.shared.tg[tgid - 1]->failed_req);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_req);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->failed_req);
+ _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->fe_counters.shared.tg[tgid - 1]->cli_aborts);
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->cli_aborts);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->cli_aborts);
+ _HA_ATOMIC_INC(&s->be_tgcounters->cli_aborts);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->cli_aborts);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->cli_aborts);
if (objt_server(s->target))
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->cli_aborts);
+ _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);
status = 400;
goto return_prx_cond;
return_srv_abort:
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->srv_aborts);
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->srv_aborts);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->srv_aborts);
+ _HA_ATOMIC_INC(&s->be_tgcounters->srv_aborts);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->srv_aborts);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->srv_aborts);
if (objt_server(s->target))
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->srv_aborts);
+ _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);
status = 502;
return_int_err:
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_INTERNAL;
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->internal_errors);
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->internal_errors);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->internal_errors);
+ _HA_ATOMIC_INC(&s->be_tgcounters->internal_errors);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->internal_errors);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->internal_errors);
if (objt_server(s->target))
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->internal_errors);
+ _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->fe_counters.shared.tg[tgid - 1]->failed_req);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_req);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->failed_req);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->failed_req);
stream_report_term_evt(s->scf, strm_tevt_type_proto_err);
status = 400;
/* fall through */
s->flags &= ~SF_CURR_SESS;
_HA_ATOMIC_DEC(&__objt_server(s->target)->cur_sess);
}
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->retries);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->retries);
}
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->retries);
+ _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->be_counters.shared.tg[tgid - 1]->failed_resp);
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_resp);
if (objt_server(s->target))
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->failed_resp);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->failed_resp);
/* if the server refused the early data, just send a 425 */
if (conn && conn->err_code == CO_ER_SSL_EARLY_FAILED)
return 0;
}
}
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->failed_resp);
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_resp);
if (objt_server(s->target))
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->failed_resp);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->failed_resp);
txn->status = 504;
stream_inc_http_fail_ctr(s);
/* 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->fe_counters.shared.tg[tgid - 1]->cli_aborts);
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->cli_aborts);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->cli_aborts);
+ _HA_ATOMIC_INC(&s->be_tgcounters->cli_aborts);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->cli_aborts);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->cli_aborts);
if (objt_server(s->target))
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->cli_aborts);
+ _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->be_counters.shared.tg[tgid - 1]->failed_resp);
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_resp);
if (objt_server(s->target))
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->failed_resp);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->failed_resp);
txn->status = 502;
stream_inc_http_fail_ctr(s);
if (s->flags & SF_SRV_REUSED)
goto abort_keep_alive;
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->failed_resp);
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_resp);
if (objt_server(s->target))
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->failed_resp);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->failed_resp);
rep->analysers &= AN_RES_FLT_END;
if (!(s->flags & SF_ERR_MASK))
if (n < 1 || n > 5)
n = 0;
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->p.http.rsp[n]);
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->p.http.cum_req);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->p.http.rsp[n]);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->p.http.cum_req);
}
/*
return 1;
return_int_err:
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->internal_errors);
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->internal_errors);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->internal_errors);
+ _HA_ATOMIC_INC(&s->be_tgcounters->internal_errors);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->internal_errors);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->internal_errors);
if (objt_server(s->target))
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->internal_errors);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->internal_errors);
txn->status = 500;
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_INTERNAL;
return 0;
}
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->failed_resp);
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_resp);
if (objt_server(s->target))
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->failed_resp);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->failed_resp);
txn->status = 502;
stream_inc_http_fail_ctr(s);
return 1;
deny:
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->denied_resp);
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->denied_resp);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->denied_resp);
+ _HA_ATOMIC_INC(&s->be_tgcounters->denied_resp);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->denied_resp);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->denied_resp);
if (objt_server(s->target))
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->denied_resp);
+ _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->fe_counters.shared.tg[tgid - 1]->failed_rewrites);
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_rewrites);
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_rewrites);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->failed_rewrites);
if (objt_server(s->target))
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->failed_rewrites);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->failed_rewrites);
/* fall through */
return_int_err:
txn->status = 500;
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_INTERNAL;
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->internal_errors);
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->internal_errors);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->internal_errors);
+ _HA_ATOMIC_INC(&s->be_tgcounters->internal_errors);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->internal_errors);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->internal_errors);
if (objt_server(s->target))
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->internal_errors);
+ _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->be_counters.shared.tg[tgid - 1]->failed_resp);
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_resp);
if (objt_server(s->target)) {
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->failed_resp);
+ _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->fe_counters.shared.tg[tgid - 1]->srv_aborts);
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->srv_aborts);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->srv_aborts);
+ _HA_ATOMIC_INC(&s->be_tgcounters->srv_aborts);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->srv_aborts);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->srv_aborts);
if (objt_server(s->target))
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->srv_aborts);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->srv_aborts);
stream_inc_http_fail_ctr(s);
if (!(s->flags & SF_ERR_MASK))
s->flags |= ((res->flags & CF_READ_TIMEOUT) ? SF_ERR_SRVTO : SF_ERR_SRVCL);
goto return_error;
return_cli_abort:
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->cli_aborts);
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->cli_aborts);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->cli_aborts);
+ _HA_ATOMIC_INC(&s->be_tgcounters->cli_aborts);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->cli_aborts);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->cli_aborts);
if (objt_server(s->target))
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->cli_aborts);
+ _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->fe_counters.shared.tg[tgid - 1]->internal_errors);
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->internal_errors);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->internal_errors);
+ _HA_ATOMIC_INC(&s->be_tgcounters->internal_errors);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->internal_errors);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->internal_errors);
if (objt_server(s->target))
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->internal_errors);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->internal_errors);
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_INTERNAL;
stream_report_term_evt(s->scb, strm_tevt_type_internal_err);
goto return_error;
return_bad_res:
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->failed_resp);
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_resp);
if (objt_server(s->target)) {
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->failed_resp);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->failed_resp);
health_adjust(__objt_server(s->target), HANA_STATUS_HTTP_RSP);
}
stream_inc_http_fail_ctr(s);
req->analysers &= AN_REQ_FLT_END;
if (s->sess->fe == s->be) /* report it if the request was intercepted by the frontend */
- _HA_ATOMIC_INC(&s->sess->fe->fe_counters.shared.tg[tgid - 1]->intercepted_req);
+ _HA_ATOMIC_INC(&s->sess->fe_tgcounters->intercepted_req);
}
out:
txn->flags &= ~TX_CK_MASK;
txn->flags |= (srv->cur_state != SRV_ST_STOPPED) ? TX_CK_VALID : TX_CK_DOWN;
s->flags |= SF_DIRECT | SF_ASSIGNED;
- s->target = &srv->obj_type;
+ stream_set_srv_target(s, srv);
break;
} else {
/* we found a server, but it's down,
txn->status = 408;
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_CLITO;
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->failed_req);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_req);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->failed_req);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->failed_req);
goto abort;
abort_res:
s = appctx_strm(appctx);
s->target = target;
+ if (objt_server(s->target))
+ s->sv_tgcounters = __objt_server(s->target)->counters.shared.tg[tgid - 1];
+
/* set the "timeout server" */
s->scb->ioto = hc->timeout_server;
parse_error:
if (l->counters)
- _HA_ATOMIC_INC(&l->counters->shared.tg[tgid - 1]->failed_req);
- _HA_ATOMIC_INC(&frontend->fe_counters.shared.tg[tgid - 1]->failed_req);
+ _HA_ATOMIC_INC(&s->sess->li_tgcounters->failed_req);
+ _HA_ATOMIC_INC(&s->sess->fe_tgcounters->failed_req);
goto error;
cli_abort:
if (l->counters)
- _HA_ATOMIC_INC(&l->counters->shared.tg[tgid - 1]->cli_aborts);
- _HA_ATOMIC_INC(&frontend->fe_counters.shared.tg[tgid - 1]->cli_aborts);
+ _HA_ATOMIC_INC(&s->sess->li_tgcounters->cli_aborts);
+ _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->fe_counters.shared.tg[tgid - 1]->p.http.rsp[5]);
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->internal_errors);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->p.http.rsp[5]);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->internal_errors);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->internal_errors);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->internal_errors);
h1c->errcode = 500;
ret = h1_send_error(h1c);
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->fe_counters.shared.tg[tgid - 1]->p.http.rsp[4]);
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->failed_req);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->p.http.rsp[4]);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_req);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->failed_req);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->failed_req);
if (!h1c->errcode)
h1c->errcode = 400;
session_inc_http_req_ctr(sess);
proxy_inc_fe_req_ctr(sess->listener, sess->fe, 1);
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->p.http.rsp[4]);
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->failed_req);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->p.http.rsp[4]);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_req);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->failed_req);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->failed_req);
h1c->errcode = 501;
ret = h1_send_error(h1c);
session_inc_http_req_ctr(sess);
proxy_inc_fe_req_ctr(sess->listener, sess->fe, 1);
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->p.http.rsp[4]);
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->failed_req);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->p.http.rsp[4]);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_req);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->failed_req);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->failed_req);
h1c->errcode = 408;
ret = h1_send_error(h1c);
s->scb->dst = addr;
s->scb->flags |= (SC_FL_RCV_ONCE|SC_FL_NOLINGER);
s->flags = SF_ASSIGNED;
- s->target = &peer->srv->obj_type;
+ stream_set_srv_target(s, peer->srv);
s->do_log = NULL;
s->uniq_id = 0;
return 0;
s->be = be;
+ s->be_tgcounters = be->be_counters.shared.tg[tgid - 1];
HA_ATOMIC_UPDATE_MAX(&be->be_counters.conn_max,
HA_ATOMIC_ADD_FETCH(&be->beconn, 1));
proxy_inc_be_ctr(be);
sess->flags = SESS_FL_NONE;
sess->src = NULL;
sess->dst = NULL;
+ 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];
TRACE_STATE("new session", SESS_EV_NEW, sess);
}
TRACE_LEAVE(SESS_EV_NEW);
s->scb->dst = addr;
s->scb->flags |= (SC_FL_RCV_ONCE);
- s->target = &sft->srv->obj_type;
+ stream_set_srv_target(s, sft->srv);
s->flags = SF_ASSIGNED;
s->do_log = NULL;
* when the default backend is assigned.
*/
s->be = sess->fe;
+ s->be_tgcounters = sess->fe->be_counters.shared.tg[tgid - 1];
+
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->fe_counters.shared.tg[tgid - 1]->bytes_in, bytes);
- _HA_ATOMIC_ADD(&s->be->be_counters.shared.tg[tgid - 1]->bytes_in, bytes);
+ _HA_ATOMIC_ADD(&sess->fe_tgcounters->bytes_in, bytes);
+ _HA_ATOMIC_ADD(&s->be_tgcounters->bytes_in, bytes);
if (objt_server(s->target))
- _HA_ATOMIC_ADD(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->bytes_in, bytes);
+ _HA_ATOMIC_ADD(&s->sv_tgcounters->bytes_in, bytes);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_ADD(&sess->listener->counters->shared.tg[tgid - 1]->bytes_in, bytes);
+ _HA_ATOMIC_ADD(&sess->li_tgcounters->bytes_in, bytes);
for (i = 0; i < global.tune.nb_stk_ctr; i++) {
if (!stkctr_inc_bytes_in_ctr(&s->stkctr[i], bytes))
bytes = s->res.total - s->logs.bytes_out;
s->logs.bytes_out = s->res.total;
if (bytes) {
- _HA_ATOMIC_ADD(&sess->fe->fe_counters.shared.tg[tgid - 1]->bytes_out, bytes);
- _HA_ATOMIC_ADD(&s->be->be_counters.shared.tg[tgid - 1]->bytes_out, bytes);
+ _HA_ATOMIC_ADD(&sess->fe_tgcounters->bytes_out, bytes);
+ _HA_ATOMIC_ADD(&s->be_tgcounters->bytes_out, bytes);
if (objt_server(s->target))
- _HA_ATOMIC_ADD(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->bytes_out, bytes);
+ _HA_ATOMIC_ADD(&s->sv_tgcounters->bytes_out, bytes);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_ADD(&sess->listener->counters->shared.tg[tgid - 1]->bytes_out, bytes);
+ _HA_ATOMIC_ADD(&sess->li_tgcounters->bytes_out, bytes);
for (i = 0; i < global.tune.nb_stk_ctr; i++) {
if (!stkctr_inc_bytes_out_ctr(&s->stkctr[i], bytes))
if (!(s->flags & SF_FINST_MASK)) {
if (s->scb->state == SC_ST_INI) {
/* anything before REQ in fact */
- _HA_ATOMIC_INC(&strm_fe(s)->fe_counters.shared.tg[tgid - 1]->failed_req);
+ _HA_ATOMIC_INC(&s->sess->fe_tgcounters->failed_req);
if (strm_li(s) && strm_li(s)->counters)
- _HA_ATOMIC_INC(&strm_li(s)->counters->shared.tg[tgid - 1]->failed_req);
+ _HA_ATOMIC_INC(&s->sess->li_tgcounters->failed_req);
s->flags |= SF_FINST_R;
}
if (rule->from != ACT_F_HTTP_REQ) {
if (sess->fe == s->be) /* report it if the request was intercepted by the frontend */
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->intercepted_req);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->intercepted_req);
/* The flag SF_ASSIGNED prevent from server assignment. */
s->flags |= SF_ASSIGNED;
(px->options & PR_O_PERSIST) ||
(s->flags & SF_FORCE_PRST)) {
s->flags |= SF_DIRECT | SF_ASSIGNED;
- s->target = &srv->obj_type;
+ stream_set_srv_target(s, srv);
break;
}
/* if the server is not UP, let's go on with next rules
if ((srv->cur_state != SRV_ST_STOPPED) ||
(px->options & PR_O_PERSIST) || (s->flags & SF_FORCE_PRST)) {
s->flags |= SF_DIRECT | SF_ASSIGNED;
- s->target = &srv->obj_type;
+ stream_set_srv_target(s, srv);
}
}
sc_shutdown(scf);
if (!(req->analysers) && !(res->analysers)) {
COUNT_IF(1, "Report a client abort (no analysers)");
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->cli_aborts);
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->cli_aborts);
+ _HA_ATOMIC_INC(&s->be_tgcounters->cli_aborts);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->cli_aborts);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->cli_aborts);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->cli_aborts);
if (srv)
- _HA_ATOMIC_INC(&srv->counters.shared.tg[tgid - 1]->cli_aborts);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->cli_aborts);
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_CLICL;
if (!(s->flags & SF_FINST_MASK))
if (sc_state_in(scb->state, SC_SB_EST|SC_SB_DIS)) {
sc_abort(scb);
sc_shutdown(scb);
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->failed_resp);
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_resp);
if (srv)
- _HA_ATOMIC_INC(&srv->counters.shared.tg[tgid - 1]->failed_resp);
+ _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->be_counters.shared.tg[tgid - 1]->srv_aborts);
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->srv_aborts);
+ _HA_ATOMIC_INC(&s->be_tgcounters->srv_aborts);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->srv_aborts);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->srv_aborts);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->srv_aborts);
if (srv)
- _HA_ATOMIC_INC(&srv->counters.shared.tg[tgid - 1]->srv_aborts);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->srv_aborts);
if (!(s->flags & SF_ERR_MASK))
s->flags |= SF_ERR_SRVCL;
if (!(s->flags & SF_FINST_MASK))
req->analysers &= AN_REQ_FLT_END;
channel_auto_close(req);
if (scf->flags & SC_FL_ERROR) {
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->cli_aborts);
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->cli_aborts);
+ _HA_ATOMIC_INC(&s->be_tgcounters->cli_aborts);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->cli_aborts);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->cli_aborts);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->cli_aborts);
if (srv)
- _HA_ATOMIC_INC(&srv->counters.shared.tg[tgid - 1]->cli_aborts);
+ _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->be_counters.shared.tg[tgid - 1]->cli_aborts);
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->cli_aborts);
+ _HA_ATOMIC_INC(&s->be_tgcounters->cli_aborts);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->cli_aborts);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->cli_aborts);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->cli_aborts);
if (srv)
- _HA_ATOMIC_INC(&srv->counters.shared.tg[tgid - 1]->cli_aborts);
+ _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->be_counters.shared.tg[tgid - 1]->srv_aborts);
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->srv_aborts);
+ _HA_ATOMIC_INC(&s->be_tgcounters->srv_aborts);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->srv_aborts);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->srv_aborts);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->srv_aborts);
if (srv)
- _HA_ATOMIC_INC(&srv->counters.shared.tg[tgid - 1]->srv_aborts);
+ _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->be_counters.shared.tg[tgid - 1]->srv_aborts);
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->srv_aborts);
+ _HA_ATOMIC_INC(&s->be_tgcounters->srv_aborts);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->srv_aborts);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->srv_aborts);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->srv_aborts);
if (srv)
- _HA_ATOMIC_INC(&srv->counters.shared.tg[tgid - 1]->srv_aborts);
+ _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->be_counters.shared.tg[tgid - 1]->srv_aborts);
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->srv_aborts);
+ _HA_ATOMIC_INC(&s->be_tgcounters->srv_aborts);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->srv_aborts);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->srv_aborts);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->srv_aborts);
if (srv)
- _HA_ATOMIC_INC(&srv->counters.shared.tg[tgid - 1]->srv_aborts);
+ _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->be_counters.shared.tg[tgid - 1]->cli_aborts);
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->cli_aborts);
+ _HA_ATOMIC_INC(&s->be_tgcounters->cli_aborts);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->cli_aborts);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->cli_aborts);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->cli_aborts);
if (srv)
- _HA_ATOMIC_INC(&srv->counters.shared.tg[tgid - 1]->cli_aborts);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->cli_aborts);
s->flags |= SF_ERR_CLITO;
COUNT_IF(1, "Report unhandled client timeout (WR)");
}
n = 0;
if (sess->fe->mode == PR_MODE_HTTP) {
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->p.http.rsp[n]);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->p.http.rsp[n]);
}
if ((s->flags & SF_BE_ASSIGNED) &&
(s->be->mode == PR_MODE_HTTP)) {
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->p.http.rsp[n]);
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->p.http.cum_req);
+ _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(&srv->counters.shared.tg[tgid - 1]->p.http.cum_req) : HA_ATOMIC_LOAD(&srv->counters.shared.tg[tgid - 1]->cum_lbconn)) > TIME_STATS_SAMPLES) ? TIME_STATS_SAMPLES : 0;
+ 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;
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.ttime_max, t_close);
}
samples_window = (((s->be->mode == PR_MODE_HTTP) ?
- HA_ATOMIC_LOAD(&s->be->be_counters.shared.tg[tgid - 1]->p.http.cum_req) : HA_ATOMIC_LOAD(&s->be->be_counters.shared.tg[tgid - 1]->cum_lbconn)) > TIME_STATS_SAMPLES) ? TIME_STATS_SAMPLES : 0;
+ 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;
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);
strm->req.analysers &= AN_REQ_FLT_END;
strm->res.analysers &= AN_RES_FLT_END;
if (strm->flags & SF_BE_ASSIGNED)
- _HA_ATOMIC_INC(&strm->be->be_counters.shared.tg[tgid - 1]->denied_req);
+ _HA_ATOMIC_INC(&strm->be_tgcounters->denied_req);
if (!(strm->flags & SF_ERR_MASK))
strm->flags |= SF_ERR_PRXCOND;
if (!(strm->flags & SF_FINST_MASK))
strm->flags |= SF_FINST_R;
}
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->denied_req);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->denied_req);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->denied_req);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->denied_req);
return ACT_RET_ABRT;
}
return 0;
deny:
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->denied_req);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->denied_req);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->denied_req);
+ _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->fe_counters.shared.tg[tgid - 1]->internal_errors);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->internal_errors);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->internal_errors);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->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.shared.tg[tgid - 1]->failed_req);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->failed_req);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->failed_req);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->failed_req);
stream_report_term_evt(s->scf, strm_tevt_type_proto_err);
reject:
return 0;
deny:
- _HA_ATOMIC_INC(&s->sess->fe->fe_counters.shared.tg[tgid - 1]->denied_resp);
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->denied_resp);
+ _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)
- _HA_ATOMIC_INC(&s->sess->listener->counters->shared.tg[tgid - 1]->denied_resp);
+ _HA_ATOMIC_INC(&s->sess->li_tgcounters->denied_resp);
if (objt_server(s->target))
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->denied_resp);
+ _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->fe_counters.shared.tg[tgid - 1]->internal_errors);
- _HA_ATOMIC_INC(&s->be->be_counters.shared.tg[tgid - 1]->internal_errors);
+ _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)
- _HA_ATOMIC_INC(&s->sess->listener->counters->shared.tg[tgid - 1]->internal_errors);
+ _HA_ATOMIC_INC(&s->sess->li_tgcounters->internal_errors);
if (objt_server(s->target))
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->internal_errors);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->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.shared.tg[tgid - 1]->failed_resp);
+ _HA_ATOMIC_INC(&s->be_tgcounters->failed_resp);
if (objt_server(s->target))
- _HA_ATOMIC_INC(&__objt_server(s->target)->counters.shared.tg[tgid - 1]->failed_resp);
+ _HA_ATOMIC_INC(&s->sv_tgcounters->failed_resp);
stream_report_term_evt(s->scf, strm_tevt_type_proto_err);
reject:
goto end;
}
else if (rule->action == ACT_ACTION_DENY) {
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->denied_conn);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->denied_conn);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->denied_conn);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->denied_conn);
result = 0;
goto end;
goto end;
}
else if (rule->action == ACT_ACTION_DENY) {
- _HA_ATOMIC_INC(&sess->fe->fe_counters.shared.tg[tgid - 1]->denied_sess);
+ _HA_ATOMIC_INC(&sess->fe_tgcounters->denied_sess);
if (sess->listener && sess->listener->counters)
- _HA_ATOMIC_INC(&sess->listener->counters->shared.tg[tgid - 1]->denied_sess);
+ _HA_ATOMIC_INC(&sess->li_tgcounters->denied_sess);
result = 0;
goto end;