Path migration ignores DisablePathMTUDiscovery
Author: tmcCreated Sep 5, 2026Updated Sep 5, 2026
In quic-go v0.62.0, path migration starts MTU probing even when DisablePathMTUDiscovery is set. Discovery should remain disabled after migration.
Observed on IPv4 loopback with Go 1.26.0 on macOS arm64:
- Establish a connection with
DisablePathMTUDiscovery: trueandInitialPacketSize: 1200on both endpoints. - Exchange application data. Neither endpoint sends MTU probes.
- Migrate the client to a second UDP socket using
AddPath,Probe, andSwitch, then continue exchanging data.
Both endpoints then record acknowledged MTU probes of 1326, 1389, 1420, and 1436 bytes. The configuration is unchanged.
Handshake confirmation checks DisablePathMTUDiscovery and the socket's DF capability before starting discovery. The migration paths instead call mtuFinder.Reset, which arms probing without either check.
Migration should always discard the old path's MTU estimate, but restart probing only when both checks allow it. For client migration, the DF check must use the new socket.
Source: quic-go/quic-go