@marcel91200 / caddy Mirror · read-only / commits / ab720fb7
Fork 0

Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS

Mirrored from https://github.com/Slazee/caddy.git

Synced Nov 13, 10:30 UTC

core: Fix ListenQUIC listener key conflict

Reported on commit e3e8aabbcf65d37516bb97f9dc0f77df52f8cf55 Abused this change in some bash for loops to rapidly reload config while making requests and didn't observe any memory or resource leaks.

Matthew Holt committed Sep 29, 2022 at 10:32 UTC ab720fb768a2602f940cb7296c34021b5bb6c7e6
1 file changed +1 -2
listeners.go
+1 -2
@@ -436,7 +436,7 @@ func ListenPacket(network, addr string) (net.PacketConn, error) {
436 //
437 // TODO: See if we can find a more elegant solution closer to the new NetworkAddress.Listen API.
438 func ListenQUIC(ln net.PacketConn, tlsConf *tls.Config, activeRequests *int64) (quic.EarlyListener, error) {
439 - lnKey := listenerKey(ln.LocalAddr().Network(), ln.LocalAddr().String())
439 + lnKey := listenerKey("quic+"+ln.LocalAddr().Network(), ln.LocalAddr().String())
440
441 sharedEarlyListener, _, err := listenerPool.LoadOrNew(lnKey, func() (Destructor, error) {
442 earlyLn, err := quic.ListenEarly(ln, http3.ConfigureTLSConfig(tlsConf), &quic.Config{
@@ -451,7 +451,6 @@ func ListenQUIC(ln net.PacketConn, tlsConf *tls.Config, activeRequests *int64) (
451 if err != nil {
452 return nil, err
453 }
454 -
454 return &sharedQuicListener{EarlyListener: earlyLn, key: lnKey}, nil
455 })
456 if err != nil {