BUG/MINOR: stream: Be sure to have a listener to increment its counters

In process_stream(), when a client or a server abort is handled, the
corresponding listener's counter is incremented. But, we must be sure to have a
listener attached to the session. This bug was introduced by the commit
cff0f739e51.

Thanks to Fred to reporting me the bug.

No need to backport this patch, except if commit cff0f739e51 is backported.
This commit is contained in:
Christopher Faulet 2020-01-24 11:45:05 +01:00
parent be20cf36af
commit 99ac8a1aa4

View File

@ -1616,7 +1616,7 @@ struct task *process_stream(struct task *t, void *context, unsigned short state)
if (!(req->analysers) && !(res->analysers)) {
_HA_ATOMIC_ADD(&s->be->be_counters.cli_aborts, 1);
_HA_ATOMIC_ADD(&sess->fe->fe_counters.cli_aborts, 1);
if (sess->listener->counters)
if (sess->listener && sess->listener->counters)
_HA_ATOMIC_ADD(&sess->listener->counters->cli_aborts, 1);
if (srv)
_HA_ATOMIC_ADD(&srv->counters.cli_aborts, 1);
@ -1639,7 +1639,7 @@ struct task *process_stream(struct task *t, void *context, unsigned short state)
if (!(req->analysers) && !(res->analysers)) {
_HA_ATOMIC_ADD(&s->be->be_counters.srv_aborts, 1);
_HA_ATOMIC_ADD(&sess->fe->fe_counters.srv_aborts, 1);
if (sess->listener->counters)
if (sess->listener && sess->listener->counters)
_HA_ATOMIC_ADD(&sess->listener->counters->srv_aborts, 1);
if (srv)
_HA_ATOMIC_ADD(&srv->counters.srv_aborts, 1);
@ -1894,7 +1894,7 @@ struct task *process_stream(struct task *t, void *context, unsigned short state)
if (req->flags & CF_READ_ERROR) {
_HA_ATOMIC_ADD(&s->be->be_counters.cli_aborts, 1);
_HA_ATOMIC_ADD(&sess->fe->fe_counters.cli_aborts, 1);
if (sess->listener->counters)
if (sess->listener && sess->listener->counters)
_HA_ATOMIC_ADD(&sess->listener->counters->cli_aborts, 1);
if (srv)
_HA_ATOMIC_ADD(&srv->counters.cli_aborts, 1);
@ -1903,7 +1903,7 @@ struct task *process_stream(struct task *t, void *context, unsigned short state)
else if (req->flags & CF_READ_TIMEOUT) {
_HA_ATOMIC_ADD(&s->be->be_counters.cli_aborts, 1);
_HA_ATOMIC_ADD(&sess->fe->fe_counters.cli_aborts, 1);
if (sess->listener->counters)
if (sess->listener && sess->listener->counters)
_HA_ATOMIC_ADD(&sess->listener->counters->cli_aborts, 1);
if (srv)
_HA_ATOMIC_ADD(&srv->counters.cli_aborts, 1);
@ -1912,7 +1912,7 @@ struct task *process_stream(struct task *t, void *context, unsigned short state)
else if (req->flags & CF_WRITE_ERROR) {
_HA_ATOMIC_ADD(&s->be->be_counters.srv_aborts, 1);
_HA_ATOMIC_ADD(&sess->fe->fe_counters.srv_aborts, 1);
if (sess->listener->counters)
if (sess->listener && sess->listener->counters)
_HA_ATOMIC_ADD(&sess->listener->counters->srv_aborts, 1);
if (srv)
_HA_ATOMIC_ADD(&srv->counters.srv_aborts, 1);
@ -1921,7 +1921,7 @@ struct task *process_stream(struct task *t, void *context, unsigned short state)
else {
_HA_ATOMIC_ADD(&s->be->be_counters.srv_aborts, 1);
_HA_ATOMIC_ADD(&sess->fe->fe_counters.srv_aborts, 1);
if (sess->listener->counters)
if (sess->listener && sess->listener->counters)
_HA_ATOMIC_ADD(&sess->listener->counters->srv_aborts, 1);
if (srv)
_HA_ATOMIC_ADD(&srv->counters.srv_aborts, 1);
@ -1948,7 +1948,7 @@ struct task *process_stream(struct task *t, void *context, unsigned short state)
if (res->flags & CF_READ_ERROR) {
_HA_ATOMIC_ADD(&s->be->be_counters.srv_aborts, 1);
_HA_ATOMIC_ADD(&sess->fe->fe_counters.srv_aborts, 1);
if (sess->listener->counters)
if (sess->listener && sess->listener->counters)
_HA_ATOMIC_ADD(&sess->listener->counters->srv_aborts, 1);
if (srv)
_HA_ATOMIC_ADD(&srv->counters.srv_aborts, 1);
@ -1957,7 +1957,7 @@ struct task *process_stream(struct task *t, void *context, unsigned short state)
else if (res->flags & CF_READ_TIMEOUT) {
_HA_ATOMIC_ADD(&s->be->be_counters.srv_aborts, 1);
_HA_ATOMIC_ADD(&sess->fe->fe_counters.srv_aborts, 1);
if (sess->listener->counters)
if (sess->listener && sess->listener->counters)
_HA_ATOMIC_ADD(&sess->listener->counters->srv_aborts, 1);
if (srv)
_HA_ATOMIC_ADD(&srv->counters.srv_aborts, 1);
@ -1966,7 +1966,7 @@ struct task *process_stream(struct task *t, void *context, unsigned short state)
else if (res->flags & CF_WRITE_ERROR) {
_HA_ATOMIC_ADD(&s->be->be_counters.cli_aborts, 1);
_HA_ATOMIC_ADD(&sess->fe->fe_counters.cli_aborts, 1);
if (sess->listener->counters)
if (sess->listener && sess->listener->counters)
_HA_ATOMIC_ADD(&sess->listener->counters->cli_aborts, 1);
if (srv)
_HA_ATOMIC_ADD(&srv->counters.cli_aborts, 1);
@ -1975,7 +1975,7 @@ struct task *process_stream(struct task *t, void *context, unsigned short state)
else {
_HA_ATOMIC_ADD(&s->be->be_counters.cli_aborts, 1);
_HA_ATOMIC_ADD(&sess->fe->fe_counters.cli_aborts, 1);
if (sess->listener->counters)
if (sess->listener && sess->listener->counters)
_HA_ATOMIC_ADD(&sess->listener->counters->cli_aborts, 1);
if (srv)
_HA_ATOMIC_ADD(&srv->counters.cli_aborts, 1);