From 07526defe98cb671234c61002ea308da960ad9c4 Mon Sep 17 00:00:00 2001 From: Murtaza Aliakbar Date: Fri, 25 Oct 2024 18:13:05 +0530 Subject: [PATCH] nilaway: udp.go proxy may be nil --- intra/tcp.go | 2 +- intra/udp.go | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/intra/tcp.go b/intra/tcp.go index b51bd426..afb7ba79 100644 --- a/intra/tcp.go +++ b/intra/tcp.go @@ -203,9 +203,9 @@ func (h *tcpHandler) Proxy(gconn *netstack.GTCPConn, src, target netip.AddrPort) } // else not a dns request } // if ipn.Exit then let it connect as-is (aka exit) - var px ipn.Proxy = nil // pick all realips to connect to for i, dstipp := range actualTargets { + var px ipn.Proxy = nil if px, err = h.prox.ProxyTo(dstipp, uid, pids); err != nil || px == nil { continue } diff --git a/intra/udp.go b/intra/udp.go index 7384610c..40a953fc 100644 --- a/intra/udp.go +++ b/intra/udp.go @@ -302,14 +302,14 @@ func (h *udpHandler) Connect(gconn *netstack.GUDPConn, src, target netip.AddrPor // pc.RemoteAddr may be that of the proxy, not the actual dst // ex: pc.RemoteAddr is 127.0.0.1 for Orbot smm.Target = selectedTarget.Addr().String() - if px != nil { + if px != nil { // nil when all ProxyTo attempts for actualTargets fail smm.PID = px.ID() } if errs != nil { return nil, smm, errs // disconnect - } else if pc == nil || core.IsNil(pc) { - log.W("udp: connect: %s no egress conn/mux? %t for addr(%s/%s), uid %s", + } else if px == nil || pc == nil || core.IsNil(pc) { + log.W("udp: connect: %s no proxy/egress-conn (mux? %t) for addr(%s/%s), uid %s", cid, mux, target, selectedTarget, uid) return nil, smm, errUdpSetupConn // disconnect }