MEDIUM: threads/proxy: Add a lock per proxy and atomically update proxy vars
Now, each proxy contains a lock that must be used when necessary to protect
it. Moreover, all proxy's counters are now updated using atomic operations.
diff --git a/src/tcp_rules.c b/src/tcp_rules.c
index 68b2c6a..c72afb0 100644
--- a/src/tcp_rules.c
+++ b/src/tcp_rules.c
@@ -166,8 +166,8 @@
channel_abort(&s->res);
req->analysers = 0;
- s->be->be_counters.denied_req++;
- sess->fe->fe_counters.denied_req++;
+ HA_ATOMIC_ADD(&s->be->be_counters.denied_req, 1);
+ HA_ATOMIC_ADD(&sess->fe->fe_counters.denied_req, 1);
if (sess->listener && sess->listener->counters)
HA_ATOMIC_ADD(&sess->listener->counters->denied_req, 1);
@@ -344,8 +344,8 @@
channel_abort(&s->req);
rep->analysers = 0;
- s->be->be_counters.denied_resp++;
- sess->fe->fe_counters.denied_resp++;
+ HA_ATOMIC_ADD(&s->be->be_counters.denied_resp, 1);
+ HA_ATOMIC_ADD(&sess->fe->fe_counters.denied_resp, 1);
if (sess->listener && sess->listener->counters)
HA_ATOMIC_ADD(&sess->listener->counters->denied_resp, 1);
@@ -427,7 +427,7 @@
break;
}
else if (rule->action == ACT_ACTION_DENY) {
- sess->fe->fe_counters.denied_conn++;
+ HA_ATOMIC_ADD(&sess->fe->fe_counters.denied_conn, 1);
if (sess->listener && sess->listener->counters)
HA_ATOMIC_ADD(&sess->listener->counters->denied_conn, 1);
@@ -514,7 +514,7 @@
break;
}
else if (rule->action == ACT_ACTION_DENY) {
- sess->fe->fe_counters.denied_sess++;
+ HA_ATOMIC_ADD(&sess->fe->fe_counters.denied_sess, 1);
if (sess->listener && sess->listener->counters)
HA_ATOMIC_ADD(&sess->listener->counters->denied_sess, 1);