From: Frédéric Lécaille Date: Mon, 26 Jul 2021 14:23:53 +0000 (+0200) Subject: MINOR: quic: Missing encryption level rx.crypto member initialization and lock. X-Git-Tag: v2.5-dev8~99 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9054d1b5645f150c5c60dcca8cc2094608fe5961;p=thirdparty%2Fhaproxy.git MINOR: quic: Missing encryption level rx.crypto member initialization and lock. ->rx.crypto member of quic_enc_level struct was not initialized as this was done for all other members of this structure. This patch fixes this. Also adds a RW lock for the frame of this member. --- diff --git a/include/haproxy/xprt_quic-t.h b/include/haproxy/xprt_quic-t.h index b83c34e6e8..41d585c04a 100644 --- a/include/haproxy/xprt_quic-t.h +++ b/include/haproxy/xprt_quic-t.h @@ -544,7 +544,9 @@ struct quic_enc_level { /* Crypto frames */ struct { uint64_t offset; - struct eb_root frms; /* XXX TO CHECK XXX */ + struct eb_root frms; + /* must be protected from concurrent accesses */ + __decl_thread(HA_RWLOCK_T frms_rwlock); } crypto; } rx; struct { diff --git a/src/xprt_quic.c b/src/xprt_quic.c index eec3b5cd00..cc560a92e1 100644 --- a/src/xprt_quic.c +++ b/src/xprt_quic.c @@ -2719,6 +2719,9 @@ static int quic_conn_enc_level_init(struct quic_conn *qc, qel->rx.pkts = EB_ROOT; HA_RWLOCK_INIT(&qel->rx.rwlock); MT_LIST_INIT(&qel->rx.pqpkts); + qel->rx.crypto.offset = 0; + qel->rx.crypto.frms = EB_ROOT_UNIQUE; + HA_RWLOCK_INIT(&qel->rx.crypto.frms_rwlock); /* Allocate only one buffer. */ qel->tx.crypto.bufs = malloc(sizeof *qel->tx.crypto.bufs);