No runtime change — the listener already uses net.ListenUDP +
ReadFromUDP, which is the unconnected-socket pattern that accepts
datagrams from any source. nginx reloads (new workers with fresh
ephemeral source ports) are handled transparently.
- udp.go: expanded comment on Run() explaining the design choice and
contrasting with the `nc -k -u -l` latching quirk (which is an nc
bug, not a kernel behaviour).
- udp_test.go: new TestUDPListenerMultipleSources regresses against
the multi-worker scenario by sending from three independent
ListenPacket sockets (three different ephemeral source ports).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>