From 6dbb1ceb14d58303dde94bcc7503c83a19944eb8 Mon Sep 17 00:00:00 2001 From: Konrad Zemek <konrad.zemek@gmail.com> Date: Fri, 7 Jun 2019 18:47:05 +0200 Subject: [PATCH] Fix error when saddr read from PROXY is nil. --- udp.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/udp.go b/udp.go index 7d543c2..923bc64 100644 --- a/udp.go +++ b/udp.go @@ -31,7 +31,11 @@ func udpCloseAfterInactivity(conn *udpConnection, socketClosures chan<- string) } } conn.upstream.Close() - socketClosures <- conn.clientAddr.String() + if conn.clientAddr != nil { + socketClosures <- conn.clientAddr.String() + } else { + socketClosures <- "" + } } func udpCopyFromUpstream(downstream net.PacketConn, conn *udpConnection) { @@ -83,7 +87,7 @@ func udpGetSocketFromMap(downstream net.PacketConn, downstreamAddr, saddr net.Ad if saddr != nil { connKey = saddr.String() } - if conn := connMap[saddr.String()]; conn != nil { + if conn := connMap[connKey]; conn != nil { atomic.AddInt64(conn.lastActivity, 1) return conn, nil } @@ -113,8 +117,10 @@ func udpGetSocketFromMap(downstream net.PacketConn, downstreamAddr, saddr net.Ad udpConn := &udpConnection{upstream: conn.(*net.UDPConn), logger: logger, lastActivity: new(int64), - clientAddr: saddr.(*net.UDPAddr), downstreamAddr: downstreamAddr.(*net.UDPAddr)} + if saddr != nil { + udpConn.clientAddr = saddr.(*net.UDPAddr) + } go udpCopyFromUpstream(downstream, udpConn) go udpCloseAfterInactivity(udpConn, socketClosures) -- GitLab