BUG/MINOR: mux-h1: Increment open_streams counter when H1 stream is created
Since this counter was added, it was incremented at the wrong place for
client streams. It was incremented when the stream-connector (formely the
conn-stream) was created while it should be done when the H1 stream is
created. Thus, on parsing error, on H1>H2 upgrades or TCP>H1 upgrades, the
counter is not incremented. However, it is always decremented when the H1
stream is destroyed.
On bakcned side, there is no issue.
This patch must be backported to 2.6.
diff --git a/src/mux_h1.c b/src/mux_h1.c
index 441ae3e..02ac4bb 100644
--- a/src/mux_h1.c
+++ b/src/mux_h1.c
@@ -737,9 +737,6 @@
goto err;
}
- HA_ATOMIC_INC(&h1c->px_counters->open_streams);
- HA_ATOMIC_INC(&h1c->px_counters->total_streams);
-
h1c->flags = (h1c->flags & ~H1C_F_ST_EMBRYONIC) | H1C_F_ST_ATTACHED | H1C_F_ST_READY;
TRACE_LEAVE(H1_EV_STRM_NEW, h1c->conn, h1s);
return h1s_sc(h1s);
@@ -837,6 +834,9 @@
if (h1c->px->options2 & PR_O2_REQBUG_OK)
h1s->req.err_pos = -1;
+ HA_ATOMIC_INC(&h1c->px_counters->open_streams);
+ HA_ATOMIC_INC(&h1c->px_counters->total_streams);
+
h1c->idle_exp = TICK_ETERNITY;
h1_set_idle_expiration(h1c);
TRACE_LEAVE(H1_EV_H1S_NEW, h1c->conn, h1s);