MINOR: stream: provide a few helpers to retrieve frontend, listener and origin
Expressions are quite long when using strm_sess(strm)->whatever, so let's
provide a few helpers : strm_fe(), strm_li(), strm_orig().
diff --git a/include/proto/stream.h b/include/proto/stream.h
index 1cd506a..eade028 100644
--- a/include/proto/stream.h
+++ b/include/proto/stream.h
@@ -68,6 +68,24 @@
return strm->sess;
}
+/* returns the frontend this stream was initiated from */
+static inline struct proxy *strm_fe(const struct stream *strm)
+{
+ return strm->sess->fe;
+}
+
+/* returns the listener this stream was initiated from */
+static inline struct listener *strm_li(const struct stream *strm)
+{
+ return strm->sess->listener;
+}
+
+/* returns a pointer to the origin of the session which created this stream */
+static inline enum obj_type *strm_orig(const struct stream *strm)
+{
+ return strm->sess->origin;
+}
+
/* sets the stick counter's entry pointer */
static inline void stkctr_set_entry(struct stkctr *stkctr, struct stksess *entry)
{
diff --git a/src/backend.c b/src/backend.c
index 0d18dd7..75792bd 100644
--- a/src/backend.c
+++ b/src/backend.c
@@ -607,7 +607,7 @@
switch (s->be->lbprm.algo & BE_LB_PARM) {
case BE_LB_HASH_SRC:
- conn = objt_conn(strm_sess(s)->origin);
+ conn = objt_conn(strm_orig(s));
if (conn && conn->addr.from.ss_family == AF_INET) {
srv = get_server_sh(s->be,
(void *)&((struct sockaddr_in *)&conn->addr.from)->sin_addr,
@@ -746,7 +746,7 @@
*/
int assign_server_address(struct stream *s)
{
- struct connection *cli_conn = objt_conn(strm_sess(s)->origin);
+ struct connection *cli_conn = objt_conn(strm_orig(s));
struct connection *srv_conn = objt_conn(s->si[1].end);
#ifdef DEBUG_FULL
@@ -966,7 +966,7 @@
case CO_SRC_TPROXY_CLI:
case CO_SRC_TPROXY_CIP:
/* FIXME: what can we do if the client connects in IPv6 or unix socket ? */
- cli_conn = objt_conn(strm_sess(s)->origin);
+ cli_conn = objt_conn(strm_orig(s));
if (cli_conn)
srv_conn->addr.from = cli_conn->addr.from;
else
@@ -1074,7 +1074,7 @@
srv_conn->send_proxy_ofs = 0;
if (objt_server(s->target) && objt_server(s->target)->pp_opts) {
srv_conn->send_proxy_ofs = 1; /* must compute size */
- cli_conn = objt_conn(strm_sess(s)->origin);
+ cli_conn = objt_conn(strm_orig(s));
if (cli_conn)
conn_get_to_addr(cli_conn);
}
@@ -1090,7 +1090,7 @@
}
/* flag for logging source ip/port */
- if (strm_sess(s)->fe->options2 & PR_O2_SRC_ADDR)
+ if (strm_fe(s)->options2 & PR_O2_SRC_ADDR)
s->si[1].flags |= SI_FL_SRC_ADDR;
/* disable lingering */
diff --git a/src/compression.c b/src/compression.c
index 814c24f..dc5ad5a 100644
--- a/src/compression.c
+++ b/src/compression.c
@@ -319,10 +319,10 @@
/* update input rate */
if (s->comp_ctx && s->comp_ctx->cur_lvl > 0) {
update_freq_ctr(&global.comp_bps_in, msg->next);
- strm_sess(s)->fe->fe_counters.comp_in += msg->next;
+ strm_fe(s)->fe_counters.comp_in += msg->next;
s->be->be_counters.comp_in += msg->next;
} else {
- strm_sess(s)->fe->fe_counters.comp_byp += msg->next;
+ strm_fe(s)->fe_counters.comp_byp += msg->next;
s->be->be_counters.comp_byp += msg->next;
}
@@ -346,7 +346,7 @@
if (s->comp_ctx && s->comp_ctx->cur_lvl > 0) {
update_freq_ctr(&global.comp_bps_out, to_forward);
- strm_sess(s)->fe->fe_counters.comp_out += to_forward;
+ strm_fe(s)->fe_counters.comp_out += to_forward;
s->be->be_counters.comp_out += to_forward;
}
diff --git a/src/dumpstats.c b/src/dumpstats.c
index c24f815..de86339 100644
--- a/src/dumpstats.c
+++ b/src/dumpstats.c
@@ -551,7 +551,7 @@
/* any other information should be dumped here */
- if (target && strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_OPER)
+ if (target && strm_li(s)->bind_conf->level < ACCESS_LVL_OPER)
chunk_appendf(msg, "# contents not dumped due to insufficient privileges\n");
if (bi_putchk(si_ic(si), msg) == -1) {
@@ -705,7 +705,7 @@
}
/* check permissions */
- if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_OPER) {
+ if (strm_li(s)->bind_conf->level < ACCESS_LVL_OPER) {
appctx->ctx.cli.msg = stats_permission_denied_msg;
appctx->st0 = STAT_CLI_PRINT;
return;
@@ -905,7 +905,7 @@
struct appctx *appctx = __objt_appctx(si->end);
struct proxy *px;
- if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_ADMIN) {
+ if (strm_li(s)->bind_conf->level < ACCESS_LVL_ADMIN) {
appctx->ctx.cli.msg = stats_permission_denied_msg;
appctx->st0 = STAT_CLI_PRINT;
return NULL;
@@ -938,7 +938,7 @@
struct server *sv;
char *line;
- if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_ADMIN) {
+ if (strm_li(s)->bind_conf->level < ACCESS_LVL_ADMIN) {
appctx->ctx.cli.msg = stats_permission_denied_msg;
appctx->st0 = STAT_CLI_PRINT;
return NULL;
@@ -1111,7 +1111,7 @@
}
else if (strcmp(args[1], "sess") == 0) {
appctx->st2 = STAT_ST_INIT;
- if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_OPER) {
+ if (strm_li(s)->bind_conf->level < ACCESS_LVL_OPER) {
appctx->ctx.cli.msg = stats_permission_denied_msg;
appctx->st0 = STAT_CLI_PRINT;
return 1;
@@ -1127,7 +1127,7 @@
appctx->st0 = STAT_CLI_O_SESS; // stats_dump_sess_to_buffer
}
else if (strcmp(args[1], "errors") == 0) {
- if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_OPER) {
+ if (strm_li(s)->bind_conf->level < ACCESS_LVL_OPER) {
appctx->ctx.cli.msg = stats_permission_denied_msg;
appctx->st0 = STAT_CLI_PRINT;
return 1;
@@ -1188,8 +1188,8 @@
clrall = 1;
/* check permissions */
- if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_OPER ||
- (clrall && strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_ADMIN)) {
+ if (strm_li(s)->bind_conf->level < ACCESS_LVL_OPER ||
+ (clrall && strm_li(s)->bind_conf->level < ACCESS_LVL_ADMIN)) {
appctx->ctx.cli.msg = stats_permission_denied_msg;
appctx->st0 = STAT_CLI_PRINT;
return 1;
@@ -1511,15 +1511,15 @@
resume_listener(l);
}
- if (px->maxconn > px->feconn && !LIST_ISEMPTY(&strm_sess(s)->fe->listener_queue))
- dequeue_all_listeners(&strm_sess(s)->fe->listener_queue);
+ if (px->maxconn > px->feconn && !LIST_ISEMPTY(&strm_fe(s)->listener_queue))
+ dequeue_all_listeners(&strm_fe(s)->listener_queue);
return 1;
}
else if (strcmp(args[2], "global") == 0) {
int v;
- if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_ADMIN) {
+ if (strm_li(s)->bind_conf->level < ACCESS_LVL_ADMIN) {
appctx->ctx.cli.msg = stats_permission_denied_msg;
appctx->st0 = STAT_CLI_PRINT;
return 1;
@@ -1561,7 +1561,7 @@
if (strcmp(args[3], "global") == 0) {
int v;
- if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_ADMIN) {
+ if (strm_li(s)->bind_conf->level < ACCESS_LVL_ADMIN) {
appctx->ctx.cli.msg = stats_permission_denied_msg;
appctx->st0 = STAT_CLI_PRINT;
return 1;
@@ -1598,7 +1598,7 @@
if (strcmp(args[3], "global") == 0) {
int v;
- if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_ADMIN) {
+ if (strm_li(s)->bind_conf->level < ACCESS_LVL_ADMIN) {
appctx->ctx.cli.msg = stats_permission_denied_msg;
appctx->st0 = STAT_CLI_PRINT;
return 1;
@@ -1636,7 +1636,7 @@
if (strcmp(args[3], "global") == 0) {
int v;
- if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_ADMIN) {
+ if (strm_li(s)->bind_conf->level < ACCESS_LVL_ADMIN) {
appctx->ctx.cli.msg = stats_permission_denied_msg;
appctx->st0 = STAT_CLI_PRINT;
return 1;
@@ -1981,7 +1981,7 @@
else if (strcmp(args[1], "session") == 0) {
struct stream *sess, *ptr;
- if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_ADMIN) {
+ if (strm_li(s)->bind_conf->level < ACCESS_LVL_ADMIN) {
appctx->ctx.cli.msg = stats_permission_denied_msg;
appctx->st0 = STAT_CLI_PRINT;
return 1;
@@ -5020,9 +5020,9 @@
tm.tm_mday, monthname[tm.tm_mon], tm.tm_year+1900,
tm.tm_hour, tm.tm_min, tm.tm_sec, (int)(sess->logs.accept_date.tv_usec),
sess->uniq_id,
- strm_sess(sess)->listener && strm_sess(sess)->listener->proto->name ? strm_sess(sess)->listener->proto->name : "?");
+ strm_li(sess) && strm_li(sess)->proto->name ? strm_li(sess)->proto->name : "?");
- conn = objt_conn(strm_sess(sess)->origin);
+ conn = objt_conn(strm_orig(sess));
switch (conn ? addr_to_str(&conn->addr.from, pn, sizeof(pn)) : AF_UNSPEC) {
case AF_INET:
case AF_INET6:
@@ -5030,7 +5030,7 @@
pn, get_host_port(&conn->addr.from));
break;
case AF_UNIX:
- chunk_appendf(&trash, " source=unix:%d\n", strm_sess(sess)->listener->luid);
+ chunk_appendf(&trash, " source=unix:%d\n", strm_li(sess)->luid);
break;
default:
/* no more information to print right now */
@@ -5044,9 +5044,9 @@
chunk_appendf(&trash,
" frontend=%s (id=%u mode=%s), listener=%s (id=%u)",
- strm_sess(sess)->fe->id, strm_sess(sess)->fe->uuid, strm_sess(sess)->fe->mode ? "http" : "tcp",
- strm_sess(sess)->listener ? strm_sess(sess)->listener->name ? strm_sess(sess)->listener->name : "?" : "?",
- strm_sess(sess)->listener ? strm_sess(sess)->listener->luid : 0);
+ strm_fe(sess)->id, strm_fe(sess)->uuid, strm_fe(sess)->mode ? "http" : "tcp",
+ strm_li(sess) ? strm_li(sess)->name ? strm_li(sess)->name : "?" : "?",
+ strm_li(sess) ? strm_li(sess)->luid : 0);
if (conn)
conn_get_to_addr(conn);
@@ -5058,7 +5058,7 @@
pn, get_host_port(&conn->addr.to));
break;
case AF_UNIX:
- chunk_appendf(&trash, " addr=unix:%d\n", strm_sess(sess)->listener->luid);
+ chunk_appendf(&trash, " addr=unix:%d\n", strm_li(sess)->luid);
break;
default:
/* no more information to print right now */
@@ -5602,10 +5602,10 @@
chunk_appendf(&trash,
"%p: proto=%s",
curr_sess,
- strm_sess(curr_sess)->listener->proto->name);
+ strm_li(curr_sess)->proto->name);
- conn = objt_conn(strm_sess(curr_sess)->origin);
+ conn = objt_conn(strm_orig(curr_sess));
switch (conn ? addr_to_str(&conn->addr.from, pn, sizeof(pn)) : AF_UNSPEC) {
case AF_INET:
case AF_INET6:
@@ -5613,7 +5613,7 @@
" src=%s:%d fe=%s be=%s srv=%s",
pn,
get_host_port(&conn->addr.from),
- strm_sess(curr_sess)->fe->id,
+ strm_fe(curr_sess)->id,
(curr_sess->be->cap & PR_CAP_BE) ? curr_sess->be->id : "<NONE>",
objt_server(curr_sess->target) ? objt_server(curr_sess->target)->id : "<none>"
);
@@ -5621,8 +5621,8 @@
case AF_UNIX:
chunk_appendf(&trash,
" src=unix:%d fe=%s be=%s srv=%s",
- strm_sess(curr_sess)->listener->luid,
- strm_sess(curr_sess)->fe->id,
+ strm_li(curr_sess)->luid,
+ strm_fe(curr_sess)->id,
(curr_sess->be->cap & PR_CAP_BE) ? curr_sess->be->id : "<NONE>",
objt_server(curr_sess->target) ? objt_server(curr_sess->target)->id : "<none>"
);
@@ -5828,7 +5828,7 @@
return 0;
if (appctx->ctx.table.target &&
- strm_sess(s)->listener->bind_conf->level >= ACCESS_LVL_OPER) {
+ strm_li(s)->bind_conf->level >= ACCESS_LVL_OPER) {
/* dump entries only if table explicitly requested */
eb = ebmb_first(&appctx->ctx.table.proxy->table.keys);
if (eb) {
diff --git a/src/peers.c b/src/peers.c
index b5d1d8e..882633b 100644
--- a/src/peers.c
+++ b/src/peers.c
@@ -215,7 +215,7 @@
static void peer_io_handler(struct stream_interface *si)
{
struct stream *s = si_strm(si);
- struct peers *curpeers = (struct peers *)strm_sess(s)->fe->parent;
+ struct peers *curpeers = (struct peers *)strm_fe(s)->parent;
struct appctx *appctx = objt_appctx(si->end);
int reql = 0;
int repl = 0;
diff --git a/src/proto_http.c b/src/proto_http.c
index 1cb3063..338ae9e 100644
--- a/src/proto_http.c
+++ b/src/proto_http.c
@@ -851,8 +851,8 @@
{
if (s->be->errmsg[msgnum].str)
return &s->be->errmsg[msgnum];
- else if (strm_sess(s)->fe->errmsg[msgnum].str)
- return &strm_sess(s)->fe->errmsg[msgnum];
+ else if (strm_fe(s)->errmsg[msgnum].str)
+ return &strm_fe(s)->errmsg[msgnum];
else
return &http_err_chunks[msgnum];
}
@@ -2264,7 +2264,7 @@
}
/* search for the algo in the backend in priority or the frontend */
- if ((s->be->comp && (comp_algo_back = s->be->comp->algos)) || (strm_sess(s)->fe->comp && (comp_algo_back = strm_sess(s)->fe->comp->algos))) {
+ if ((s->be->comp && (comp_algo_back = s->be->comp->algos)) || (strm_fe(s)->comp && (comp_algo_back = strm_fe(s)->comp->algos))) {
int best_q = 0;
ctx.idx = 0;
@@ -2322,7 +2322,7 @@
/* remove all occurrences of the header when "compression offload" is set */
if (s->comp_algo) {
- if ((s->be->comp && s->be->comp->offload) || (strm_sess(s)->fe->comp && strm_sess(s)->fe->comp->offload)) {
+ if ((s->be->comp && s->be->comp->offload) || (strm_fe(s)->comp && strm_fe(s)->comp->offload)) {
http_remove_header2(msg, &txn->hdr_idx, &ctx);
ctx.idx = 0;
while (http_find_header2("Accept-Encoding", 15, req->p, &txn->hdr_idx, &ctx)) {
@@ -2333,7 +2333,7 @@
}
/* identity is implicit does not require headers */
- if ((s->be->comp && (comp_algo_back = s->be->comp->algos)) || (strm_sess(s)->fe->comp && (comp_algo_back = strm_sess(s)->fe->comp->algos))) {
+ if ((s->be->comp && (comp_algo_back = s->be->comp->algos)) || (strm_fe(s)->comp && (comp_algo_back = strm_fe(s)->comp->algos))) {
for (comp_algo = comp_algo_back; comp_algo; comp_algo = comp_algo->next) {
if (comp_algo->cfg_name_len == 8 && memcmp(comp_algo->cfg_name, "identity", 8) == 0) {
s->comp_algo = comp_algo;
@@ -2400,7 +2400,7 @@
goto fail;
if ((s->be->comp && (comp_type = s->be->comp->types)) ||
- (strm_sess(s)->fe->comp && (comp_type = strm_sess(s)->fe->comp->types))) {
+ (strm_fe(s)->comp && (comp_type = strm_fe(s)->comp->types))) {
for (; comp_type; comp_type = comp_type->next) {
if (ctx.vlen >= comp_type->name_len &&
strncasecmp(ctx.line+ctx.val, comp_type->name, comp_type->name_len) == 0)
@@ -2413,7 +2413,7 @@
}
}
else { /* no content-type header */
- if ((s->be->comp && s->be->comp->types) || (strm_sess(s)->fe->comp && strm_sess(s)->fe->comp->types))
+ if ((s->be->comp && s->be->comp->types) || (strm_fe(s)->comp && strm_fe(s)->comp->types))
goto fail; /* a content-type was required */
}
@@ -2464,7 +2464,7 @@
void http_adjust_conn_mode(struct stream *s, struct http_txn *txn, struct http_msg *msg)
{
- struct proxy *fe = strm_sess(s)->fe;
+ struct proxy *fe = strm_fe(s);
int tmp = TX_CON_WANT_KAL;
if (!((fe->options2|s->be->options2) & PR_O2_FAKE_KA)) {
@@ -4907,7 +4907,7 @@
void http_end_txn_clean_session(struct stream *s)
{
int prev_status = s->txn->status;
- struct proxy *fe = strm_sess(s)->fe;
+ struct proxy *fe = strm_fe(s);
/* FIXME: We need a more portable way of releasing a backend's and a
* server's connections. We need a safer way to reinitialize buffer
@@ -5062,7 +5062,7 @@
/* we're in keep-alive with an idle connection, monitor it */
si_idle_conn(&s->si[1]);
- s->req.analysers = strm_sess(s)->listener->analysers;
+ s->req.analysers = strm_li(s)->analysers;
s->res.analysers = 0;
}
@@ -6988,7 +6988,7 @@
* FIXME: should we return an HTTP/500 here so that
* the admin knows there's a problem ?
*/
- if (s->be != strm_sess(s)->fe)
+ if (s->be != strm_fe(s))
break;
/* Swithing Proxy */
@@ -7089,7 +7089,7 @@
* FIXME: should we return an HTTP/500 here so that
* the admin knows there's a problem ?
*/
- if (s->be != strm_sess(s)->fe)
+ if (s->be != strm_fe(s))
break;
/* Swithing Proxy */
@@ -8830,7 +8830,7 @@
void http_init_txn(struct stream *s)
{
struct http_txn *txn = s->txn;
- struct proxy *fe = strm_sess(s)->fe;
+ struct proxy *fe = strm_fe(s);
txn->flags = 0;
txn->status = -1;
@@ -8872,7 +8872,7 @@
void http_end_txn(struct stream *s)
{
struct http_txn *txn = s->txn;
- struct proxy *fe = strm_sess(s)->fe;
+ struct proxy *fe = strm_fe(s);
/* release any possible compression context */
if (s->flags & SF_COMP_READY)
@@ -8920,8 +8920,8 @@
*/
s->current_rule_list = NULL;
- s->be = strm_sess(s)->fe;
- s->logs.logwait = strm_sess(s)->fe->to_log;
+ s->be = strm_fe(s);
+ s->logs.logwait = strm_fe(s)->to_log;
s->logs.level = 0;
stream_del_srv_conn(s);
s->target = NULL;
@@ -8944,11 +8944,11 @@
if (unlikely(s->res.buf->i))
s->res.buf->i = 0;
- s->req.rto = strm_sess(s)->fe->timeout.client;
+ s->req.rto = strm_fe(s)->timeout.client;
s->req.wto = TICK_ETERNITY;
s->res.rto = TICK_ETERNITY;
- s->res.wto = strm_sess(s)->fe->timeout.client;
+ s->res.wto = strm_fe(s)->timeout.client;
s->req.rex = TICK_ETERNITY;
s->req.wex = TICK_ETERNITY;
@@ -10887,7 +10887,7 @@
smp_fetch_capture_header_req(struct proxy *px, struct session *sess, struct stream *strm, unsigned int opt,
const struct arg *args, struct sample *smp, const char *kw, void *private)
{
- struct proxy *fe = strm_sess(strm)->fe;
+ struct proxy *fe = strm_fe(strm);
int idx;
if (!args || args->type != ARGT_UINT)
@@ -10913,7 +10913,7 @@
smp_fetch_capture_header_res(struct proxy *px, struct session *sess, struct stream *strm, unsigned int opt,
const struct arg *args, struct sample *smp, const char *kw, void *private)
{
- struct proxy *fe = strm_sess(strm)->fe;
+ struct proxy *fe = strm_fe(strm);
int idx;
if (!args || args->type != ARGT_UINT)
diff --git a/src/proxy.c b/src/proxy.c
index f55aaa4..12e8aa3 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -959,8 +959,8 @@
* have to re-adjust the desired keep-alive/close mode to accommodate
* both the frontend's and the backend's modes.
*/
- if (strm_sess(s)->fe->mode == PR_MODE_HTTP && be->mode == PR_MODE_HTTP &&
- ((strm_sess(s)->fe->options & PR_O_HTTP_MODE) != (be->options & PR_O_HTTP_MODE)))
+ if (strm_fe(s)->mode == PR_MODE_HTTP && be->mode == PR_MODE_HTTP &&
+ ((strm_fe(s)->options & PR_O_HTTP_MODE) != (be->options & PR_O_HTTP_MODE)))
http_adjust_conn_mode(s, s->txn, &s->txn->req);
/* If an LB algorithm needs to access some pre-parsed body contents,
@@ -984,7 +984,7 @@
* be more reliable to store the list of analysers that have been run,
* but what we do here is OK for now.
*/
- s->req.analysers |= be->be_req_ana & ~strm_sess(s)->listener->analysers;
+ s->req.analysers |= be->be_req_ana & ~strm_li(s)->analysers;
return 1;
}
diff --git a/src/stream.c b/src/stream.c
index 91c2a0d..ba6f499 100644
--- a/src/stream.c
+++ b/src/stream.c
@@ -1062,7 +1062,7 @@
if (s->be->mode == PR_MODE_TCP) { /* let's allow immediate data connection in this case */
/* if the user wants to log as soon as possible, without counting
* bytes from the server, then this is the right moment. */
- if (!LIST_ISEMPTY(&strm_sess(s)->fe->logformat) && !(s->logs.logwait & LW_BYTES)) {
+ if (!LIST_ISEMPTY(&strm_fe(s)->logformat) && !(s->logs.logwait & LW_BYTES)) {
s->logs.t_close = s->logs.t_connect; /* to get a valid end date */
s->do_log(s);
}
@@ -1071,7 +1071,7 @@
rep->flags |= CF_READ_DONTWAIT; /* a single read is enough to get response headers */
}
- rep->analysers |= strm_sess(s)->fe->fe_rsp_ana | s->be->be_rsp_ana;
+ rep->analysers |= strm_fe(s)->fe_rsp_ana | s->be->be_rsp_ana;
rep->flags |= CF_READ_ATTACHED; /* producer is now attached */
if (req->flags & CF_WAKE_CONNECT) {
req->flags |= CF_WAKE_ONCE;
@@ -1264,9 +1264,9 @@
if (!(s->flags & SF_FINST_MASK)) {
if (s->si[1].state < SI_ST_REQ) {
- strm_sess(s)->fe->fe_counters.failed_req++;
- if (strm_sess(s)->listener->counters)
- strm_sess(s)->listener->counters->failed_req++;
+ strm_fe(s)->fe_counters.failed_req++;
+ if (strm_li(s)->counters)
+ strm_li(s)->counters->failed_req++;
s->flags |= SF_FINST_R;
}