]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: quic: Missing <conn_opening> stats counter decrementation
authorFrédéric Lécaille <flecaille@haproxy.com>
Fri, 20 May 2022 18:53:20 +0000 (20:53 +0200)
committerFrédéric Lécaille <flecaille@haproxy.com>
Fri, 20 May 2022 18:57:31 +0000 (20:57 +0200)
When we receive a CONNECTION_CLOSE frame, we should decrement this counter
if the handshake state was not successful and if we have not received
a TLS alert from the TLS stack.

src/xprt_quic.c

index 4a56e1eee5be0f3baf99b6694d87ee46ca1112be..1341dc91f58c20025e478cb91759f6ae9905dc40 100644 (file)
@@ -2626,6 +2626,13 @@ static int qc_parse_pkt_frms(struct quic_rx_packet *pkt, struct ssl_sock_ctx *ct
                case QUIC_FT_CONNECTION_CLOSE:
                case QUIC_FT_CONNECTION_CLOSE_APP:
                        if (!(qc->flags & QUIC_FL_CONN_DRAINING)) {
+                               /* If the connection did not reached the handshake complete state,
+                                * the <conn_opening> counter was not decremented. Note that if
+                                * a TLS alert was received from the TLS stack, this counter
+                                * has already been decremented.
+                                */
+                               if (qc->state < QUIC_HS_ST_COMPLETE && !(qc->flags & QUIC_FL_CONN_TLS_ALERT))
+                                       HA_ATOMIC_DEC(&qc->prx_counters->conn_opening);
                                TRACE_PROTO("Entering draining state", QUIC_EV_CONN_PRSHPKT, qc);
                                /* RFC 9000 10.2. Immediate Close:
                                 * The closing and draining connection states exist to ensure