From 81a8db4b7e41bc5d57daa770932d8fac8a29301b Mon Sep 17 00:00:00 2001 From: sbruens Date: Fri, 18 Oct 2024 15:39:59 -0400 Subject: [PATCH] Add a constructor for `packetConn` so it can be re-used in `outline-ss-server`. --- transport/shadowsocks/packet_listener.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/transport/shadowsocks/packet_listener.go b/transport/shadowsocks/packet_listener.go index 548138dc..2f067e4f 100644 --- a/transport/shadowsocks/packet_listener.go +++ b/transport/shadowsocks/packet_listener.go @@ -54,8 +54,7 @@ func (c *packetListener) ListenPacket(ctx context.Context) (net.PacketConn, erro if err != nil { return nil, fmt.Errorf("could not connect to endpoint: %w", err) } - conn := packetConn{Conn: proxyConn, key: c.key} - return &conn, nil + return NewPacketConn(proxyConn, c.key), nil } type packetConn struct { @@ -65,6 +64,10 @@ type packetConn struct { var _ net.PacketConn = (*packetConn)(nil) +func NewPacketConn(conn net.Conn, key *EncryptionKey) net.PacketConn { + return &packetConn{Conn: conn, key: key} +} + // WriteTo encrypts `b` and writes to `addr` through the proxy. func (c *packetConn) WriteTo(b []byte, addr net.Addr) (int, error) { socksTargetAddr := socks.ParseAddr(addr.String())