|
|
|
@ -412,17 +412,17 @@ func (l *udpDirectForwardListener) listenLoop() { |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
conn, ok := l.connMap.Get(raddr) |
|
|
|
conn, ok := l.connMap.Get(raddr.String()) |
|
|
|
if !ok { |
|
|
|
conn = newUDPServerConn(l.ln, raddr, l.ttl) |
|
|
|
conn.onClose = func() { |
|
|
|
l.connMap.Delete(raddr) |
|
|
|
l.connMap.Delete(raddr.String()) |
|
|
|
log.Logf("[udp] %s closed (%d)", raddr, l.connMap.Size()) |
|
|
|
} |
|
|
|
|
|
|
|
select { |
|
|
|
case l.connChan <- conn: |
|
|
|
l.connMap.Set(raddr, conn) |
|
|
|
l.connMap.Set(raddr.String(), conn) |
|
|
|
log.Logf("[udp] %s -> %s (%d)", raddr, l.Addr(), l.connMap.Size()) |
|
|
|
default: |
|
|
|
conn.Close() |
|
|
|
@ -902,17 +902,17 @@ func (l *udpRemoteForwardListener) listenLoop() { |
|
|
|
break |
|
|
|
} |
|
|
|
|
|
|
|
uc, ok := l.connMap.Get(raddr) |
|
|
|
uc, ok := l.connMap.Get(raddr.String()) |
|
|
|
if !ok { |
|
|
|
uc = newUDPServerConn(conn, raddr, l.ttl) |
|
|
|
uc.onClose = func() { |
|
|
|
l.connMap.Delete(raddr) |
|
|
|
l.connMap.Delete(raddr.String()) |
|
|
|
log.Logf("[rudp] %s closed (%d)", raddr, l.connMap.Size()) |
|
|
|
} |
|
|
|
|
|
|
|
select { |
|
|
|
case l.connChan <- uc: |
|
|
|
l.connMap.Set(raddr, uc) |
|
|
|
l.connMap.Set(raddr.String(), uc) |
|
|
|
log.Logf("[rudp] %s -> %s (%d)", raddr, l.Addr(), l.connMap.Size()) |
|
|
|
default: |
|
|
|
uc.Close() |
|
|
|
|