diff --git a/transport/internet/internal/pool.go b/transport/internet/internal/pool.go index 58df11804..fe8b83710 100644 --- a/transport/internet/internal/pool.go +++ b/transport/internet/internal/pool.go @@ -14,6 +14,10 @@ type ConnectionRecyler interface { Put(ConnectionID, net.Conn) } +type NoOpConnectionRecyler struct{} + +func (NoOpConnectionRecyler) Put(ConnectionID, net.Conn) {} + // ExpiringConnection is a connection that will expire in certain time. type ExpiringConnection struct { conn net.Conn diff --git a/transport/internet/udp/connection.go b/transport/internet/udp/dialer.go similarity index 66% rename from transport/internet/udp/connection.go rename to transport/internet/udp/dialer.go index 65399b1db..2ce70d0ec 100644 --- a/transport/internet/udp/connection.go +++ b/transport/internet/udp/dialer.go @@ -1,23 +1,12 @@ package udp import ( - "net" - "v2ray.com/core/common" v2net "v2ray.com/core/common/net" "v2ray.com/core/transport/internet" + "v2ray.com/core/transport/internet/internal" ) -type Connection struct { - net.UDPConn -} - -func (v *Connection) Reusable() bool { - return false -} - -func (v *Connection) SetReusable(b bool) {} - func init() { common.Must(internet.RegisterNetworkDialer(v2net.Network_UDP, func(src v2net.Address, dest v2net.Destination, options internet.DialerOptions) (internet.Connection, error) { @@ -26,8 +15,6 @@ func init() { return nil, err } // TODO: handle dialer options - return &Connection{ - UDPConn: *(conn.(*net.UDPConn)), - }, nil + return internal.NewConnection(internal.NewConnectionID(src, dest), conn, internal.NoOpConnectionRecyler{}, internal.ReuseConnection(false)), nil })) }