"crypto/cipher" "v2ray.com/core/common/buf" "v2ray.com/core/common/dice" "v2ray.com/core/common/errors" "v2ray.com/core/common/log" v2net "v2ray.com/core/common/net" "v2ray.com/core/transport/internet" "v2ray.com/core/transport/internet/internal" v2tls "v2ray.com/core/transport/internet/tls" ) var ( globalConv = uint32(dice.Roll(65536)) globalPool = internal.NewConnectionPool() ) type ClientConnection struct { sync.RWMutex net.Conn id internal.ConnectionId input func([]Segment) reader PacketReader writer PacketWriter } func (o *ClientConnection) Overhead() int { o.RLock() defer o.RUnlock() if o.writer == nil {
import ( "context" "crypto/tls" "net" "v2ray.com/core/common" "v2ray.com/core/common/errors" "v2ray.com/core/common/log" v2net "v2ray.com/core/common/net" "v2ray.com/core/transport/internet" "v2ray.com/core/transport/internet/internal" v2tls "v2ray.com/core/transport/internet/tls" ) var ( globalCache = internal.NewConnectionPool() ) func Dial(ctx context.Context, dest v2net.Destination) (internet.Connection, error) { log.Info("Internet|TCP: Dailing TCP to ", dest) src := internet.DialerSourceFromContext(ctx) tcpSettings := internet.TransportSettingsFromContext(ctx).(*Config) id := internal.NewConnectionID(src, dest) var conn net.Conn if dest.Network == v2net.Network_TCP && tcpSettings.IsConnectionReuse() { conn = globalCache.Get(id) } if conn == nil { var err error