fix: 添加relay日志
This commit is contained in:
@@ -31,7 +31,7 @@ func NewUDPRelay(listenConn net.PacketConn, upstreamAddr *net.UDPAddr) (*UDPRela
|
||||
return nil, fmt.Errorf("relay: upstream addr is required")
|
||||
}
|
||||
|
||||
upstreamConn, err := net.DialUDP("udp", nil, upstreamAddr)
|
||||
upstreamConn, err := net.DialUDP(relayUDPNetwork(upstreamAddr), nil, upstreamAddr)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("relay: dial upstream %s: %w", upstreamAddr, err)
|
||||
}
|
||||
@@ -68,10 +68,20 @@ func (r *UDPRelay) forwardDownstreamToUpstream() error {
|
||||
return fmt.Errorf("relay: read downstream: %w", err)
|
||||
}
|
||||
|
||||
clientAddr := cloneRelayAddr(addr)
|
||||
|
||||
r.mu.Lock()
|
||||
r.clientAddr = cloneRelayAddr(addr)
|
||||
previousAddr := cloneRelayAddr(r.clientAddr)
|
||||
r.clientAddr = clientAddr
|
||||
r.mu.Unlock()
|
||||
|
||||
switch {
|
||||
case previousAddr == nil:
|
||||
log.Printf("relay: learned downstream client %s", clientAddr)
|
||||
case !sameRelayAddr(previousAddr, clientAddr):
|
||||
log.Printf("relay: downstream client changed from %s to %s", previousAddr, clientAddr)
|
||||
}
|
||||
|
||||
if _, err := r.upstream.Write(buf[:n]); err != nil {
|
||||
return fmt.Errorf("relay: write upstream: %w", err)
|
||||
}
|
||||
@@ -113,3 +123,13 @@ func (r *UDPRelay) Close() error {
|
||||
}
|
||||
return err2
|
||||
}
|
||||
|
||||
func relayUDPNetwork(addr *net.UDPAddr) string {
|
||||
if addr == nil || addr.IP == nil {
|
||||
return "udp"
|
||||
}
|
||||
if addr.IP.To4() != nil {
|
||||
return "udp4"
|
||||
}
|
||||
return "udp6"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user