diff --git a/adapter/outbound/base.go b/adapter/outbound/base.go index 140a3546..0d86c2da 100644 --- a/adapter/outbound/base.go +++ b/adapter/outbound/base.go @@ -148,16 +148,7 @@ func (c *conn) AppendToChains(a C.ProxyAdapter) { } func NewConn(c net.Conn, a C.ProxyAdapter) C.Conn { - var remoteDestination string - if c != nil { - if tcpAddr, ok := c.RemoteAddr().(*net.TCPAddr); ok { - remoteDestination = tcpAddr.IP.String() - } else { - remoteDestination = parseRemoteDestination(a.Addr()) - } - } - - return &conn{c, []string{a.Name()}, remoteDestination} + return &conn{c, []string{a.Name()}, parseRemoteDestination(a.Addr())} } type packetConn struct { diff --git a/tunnel/statistic/tracker.go b/tunnel/statistic/tracker.go index d176bae7..fc627297 100644 --- a/tunnel/statistic/tracker.go +++ b/tunnel/statistic/tracker.go @@ -59,7 +59,13 @@ func (tt *tcpTracker) Close() error { func NewTCPTracker(conn C.Conn, manager *Manager, metadata *C.Metadata, rule C.Rule) *tcpTracker { uuid, _ := uuid.NewV4() - metadata.RemoteDst = conn.RemoteDestination() + if conn != nil { + if tcpAddr, ok := conn.RemoteAddr().(*net.TCPAddr); ok { + metadata.RemoteDst = tcpAddr.IP.String() + } else { + metadata.RemoteDst = conn.RemoteDestination() + } + } t := &tcpTracker{ Conn: conn,