microsoft/msquic

Simplify ALPN re-negotiation path

Open

#6,239 opened on Aug 18, 2026

 (2 comments) (0 reactions) (1 assignee)C (688 forks)github user discovery
Area: Coregood first issue

Repository metrics

Stars
 (4,770 stars)
PR merge metrics
 (Avg merge 6d) (40 merged PRs in 30d)

Description

We could probably simplify the ALPN negotiation by only storing the list until the ALPN is fully negotiated.

• In  QuicBindingAcceptConnection , own-copy  ClientAlpnList  but leave  NegotiatedAlpn == NULL . - ClientAlpnList can use SmallAlpnBuffer if the full list fit in it • In  QuicCryptoReNegotiateAlpn , remove the  PrevNegotiatedAlpn  fast path and single-ALPN fallback. • Select from the copied client list, then allocate/copy and assign NegotiatedAlpn . • Preserve Info->NegotiatedAlpn ; the listener callback still exposes that independently. • Keep teardown null-safe.

Originally posted by @guhetier in https://github.com/microsoft/msquic/pull/6171#discussion_r3799265048

Contributor guide