package snowflake_client import ( "errors" "net" "time" "gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/v2/common/packetpadding" ) var errENOSYS = errors.New("not implemented") func newPacketConnWrapper(localAddr, remoteAddr net.Addr, rwc packetpadding.ReadWriteCloserPreservesBoundary) net.PacketConn { return &packetConnWrapper{ ReadWriteCloserPreservesBoundary: rwc, remoteAddr: remoteAddr, localAddr: localAddr, } } type packetConnWrapper struct { packetpadding.ReadWriteCloserPreservesBoundary remoteAddr net.Addr localAddr net.Addr } func (pcw *packetConnWrapper) ReadFrom(p []byte) (n int, addr net.Addr, err error) { n, err = pcw.Read(p) if err != nil { return 0, nil, err } return n, pcw.remoteAddr, nil } func (pcw *packetConnWrapper) WriteTo(p []byte, addr net.Addr) (n int, err error) { return pcw.Write(p) } func (pcw *packetConnWrapper) Close() error { return pcw.ReadWriteCloserPreservesBoundary.Close() } func (pcw *packetConnWrapper) LocalAddr() net.Addr { return pcw.localAddr } func (pcw *packetConnWrapper) SetDeadline(t time.Time) error { return errENOSYS } func (pcw *packetConnWrapper) SetReadDeadline(t time.Time) error { return errENOSYS } func (pcw *packetConnWrapper) SetWriteDeadline(t time.Time) error { return errENOSYS }