Просмотр исходного кода

Fix freedom PacketReader/PacketWriter type assertion (#3734)

dyhkwong 1 год назад
Родитель
Сommit
815a959c96
1 измененных файлов с 16 добавлено и 14 удалено
  1. 16 14
      proxy/freedom/freedom.go

+ 16 - 14
proxy/freedom/freedom.go

@@ -276,24 +276,24 @@ func NewPacketReader(conn net.Conn, UDPOverride net.Destination) buf.Reader {
 	if statConn != nil {
 		counter = statConn.ReadCounter
 	}
-	if c, ok := iConn.(*internet.PacketConnWrapper); ok && UDPOverride.Address == nil && UDPOverride.Port == 0 {
+	if c, ok := iConn.(net.PacketConn); ok && UDPOverride.Address == nil && UDPOverride.Port == 0 {
 		return &PacketReader{
-			PacketConnWrapper: c,
-			Counter:           counter,
+			PacketConn: c,
+			Counter:    counter,
 		}
 	}
 	return &buf.PacketReader{Reader: conn}
 }
 
 type PacketReader struct {
-	*internet.PacketConnWrapper
+	net.PacketConn
 	stats.Counter
 }
 
 func (r *PacketReader) ReadMultiBuffer() (buf.MultiBuffer, error) {
 	b := buf.New()
 	b.Resize(0, buf.Size)
-	n, d, err := r.PacketConnWrapper.ReadFrom(b.Bytes())
+	n, d, err := r.PacketConn.ReadFrom(b.Bytes())
 	if err != nil {
 		b.Release()
 		return nil, err
@@ -320,24 +320,26 @@ func NewPacketWriter(conn net.Conn, h *Handler, ctx context.Context, UDPOverride
 	if statConn != nil {
 		counter = statConn.WriteCounter
 	}
-	if c, ok := iConn.(*internet.PacketConnWrapper); ok {
+	if c, ok := iConn.(net.PacketConn); ok {
 		return &PacketWriter{
-			PacketConnWrapper: c,
-			Counter:           counter,
-			Handler:           h,
-			Context:           ctx,
-			UDPOverride:       UDPOverride,
+			PacketConn:  c,
+			Counter:     counter,
+			Handler:     h,
+			Context:     ctx,
+			UDPOverride: UDPOverride,
+			Conn:        iConn,
 		}
 	}
 	return &buf.SequentialWriter{Writer: conn}
 }
 
 type PacketWriter struct {
-	*internet.PacketConnWrapper
+	net.PacketConn
 	stats.Counter
 	*Handler
 	context.Context
 	UDPOverride net.Destination
+	Conn        net.Conn
 }
 
 func (w *PacketWriter) WriteMultiBuffer(mb buf.MultiBuffer) error {
@@ -367,9 +369,9 @@ func (w *PacketWriter) WriteMultiBuffer(mb buf.MultiBuffer) error {
 				b.Release()
 				continue
 			}
-			n, err = w.PacketConnWrapper.WriteTo(b.Bytes(), destAddr)
+			n, err = w.PacketConn.WriteTo(b.Bytes(), destAddr)
 		} else {
-			n, err = w.PacketConnWrapper.Write(b.Bytes())
+			n, err = w.Conn.Write(b.Bytes())
 		}
 		b.Release()
 		if err != nil {