netstack(tun).InboundUDP() (used by udpmux.go to vend netstack routes for remote IPs a mxconn isn't connected to) seemingly results in ALL subsequent UDP connections to timeout / non responsive.
| funcInboundUDP(whostring, s*stack.Stack, in net.Conn, to, from netip.AddrPort, hGUDPConnHandler) error { |
| newgc:=makeGUDPConn(who, s, nil/*not a forwarder req*/, to, from) |
| if!settings.SingleThreaded.Load() { |
| iferr:=newgc.Establish(); err!=nil { |
| log.E("ns: udp: %s: inbound: dial: %v; src(%v) dst(%v)", |
| who, err, to, from) |
| goh.Error(newgc, to, from, err) |
| returnerr |
| } |
| } |
| goh.ReverseProxy(newgc, in, to, from) |
| returnnil |
| } |
We see similar "hang ups" in a reverse scenario with WireGuard, which tries to invoke netstack(wg).Outbound...() => netstack(tun).Inbound... when it sees new destinations (inbound).
netstack(tun).InboundUDP()(used byudpmux.goto vend netstack routes for remote IPs amxconnisn't connected to) seemingly results in ALL subsequent UDP connections to timeout / non responsive.firestack/intra/netstack/udp.go
Lines 85 to 97 in 23f8b88
We see similar "hang ups" in a reverse scenario with WireGuard, which tries to invoke
netstack(wg).Outbound...()=>netstack(tun).Inbound...when it sees new destinations (inbound).