diff --git a/common/net/packetaddr/connection_adaptor.go b/common/net/packetaddr/connection_adaptor.go index 1844233ce..2612c1e89 100644 --- a/common/net/packetaddr/connection_adaptor.go +++ b/common/net/packetaddr/connection_adaptor.go @@ -2,7 +2,6 @@ package packetaddr import ( "context" - "io" gonet "net" "sync" "time" @@ -107,18 +106,27 @@ func (c packetConnectionAdaptor) SetWriteDeadline(t time.Time) error { return nil } -func ToPacketAddrReadWriteCloser(conn net.PacketConn, isStream bool) io.ReadWriteCloser { +func ToPacketAddrConnWrapper(conn net.PacketConn, isStream bool) FusedConnection { return &packetConnWrapper{conn} } type packetConnWrapper struct { - conn net.PacketConn + net.PacketConn +} + +func (pc *packetConnWrapper) RemoteAddr() gonet.Addr { + return nil +} + +type FusedConnection interface { + net.PacketConn + net.Conn } func (pc *packetConnWrapper) Read(p []byte) (n int, err error) { recbuf := buf.StackNew() recbuf.Extend(2048) - n, addr, err := pc.conn.ReadFrom(recbuf.Bytes()) + n, addr, err := pc.PacketConn.ReadFrom(recbuf.Bytes()) if err != nil { return 0, nil } @@ -129,7 +137,7 @@ func (pc *packetConnWrapper) Read(p []byte) (n int, err error) { func (pc *packetConnWrapper) Write(p []byte) (n int, err error) { data, addr := ExtractAddressFromPacket(p) - _, err = pc.conn.WriteTo(data, addr) + _, err = pc.PacketConn.WriteTo(data, addr) if err != nil { return 0, err }