Skip to content

Commit 985e05d

Browse files
committed
packet_conn_wrappers: Unwrap a packet conn only if there are no wrappers
1 parent 968493a commit 985e05d

File tree

1 file changed

+13
-11
lines changed

1 file changed

+13
-11
lines changed

listeners.go

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -443,18 +443,20 @@ func (na NetworkAddress) ListenQUIC(ctx context.Context, portOffset uint, config
443443
ln := lnAny.(net.PacketConn)
444444

445445
h3ln := ln
446-
for {
447-
// retrieve the underlying socket, so quic-go can optimize.
448-
if unwrapper, ok := h3ln.(interface{ Unwrap() net.PacketConn }); ok {
449-
h3ln = unwrapper.Unwrap()
450-
} else {
451-
break
446+
if len(pcWrappers) == 0 {
447+
for {
448+
// retrieve the underlying socket, so quic-go can optimize.
449+
if unwrapper, ok := h3ln.(interface{ Unwrap() net.PacketConn }); ok {
450+
h3ln = unwrapper.Unwrap()
451+
} else {
452+
break
453+
}
454+
}
455+
} else {
456+
// wrap packet conn before QUIC
457+
for _, pcWrapper := range pcWrappers {
458+
h3ln = pcWrapper.WrapPacketConn(h3ln)
452459
}
453-
}
454-
455-
// wrap packet conn before QUIC
456-
for _, pcWrapper := range pcWrappers {
457-
h3ln = pcWrapper.WrapPacketConn(h3ln)
458460
}
459461

460462
sqs := newSharedQUICState(tlsConf)

0 commit comments

Comments
 (0)