Browse Source

Fix UDP reading on Windows

v2ray 9 years ago
parent
commit
55e5268ce8

+ 1 - 0
transport/internet/udp/hub.go

@@ -78,6 +78,7 @@ func (this *UDPHub) start() {
 		buffer := alloc.NewBuffer()
 		nBytes, noob, _, addr, err := this.conn.ReadMsgUDP(buffer.Value, oobBytes)
 		if err != nil {
+			log.Info("UDP|Hub: Failed to read UDP msg: ", err)
 			buffer.Release()
 			continue
 		}

+ 5 - 0
transport/internet/udp/hub_linux.go

@@ -3,6 +3,7 @@
 package udp
 
 import (
+	"net"
 	"syscall"
 
 	v2net "github.com/v2ray/v2ray-core/common/net"
@@ -32,3 +33,7 @@ func RetrieveOriginalDest(oob []byte) v2net.Destination {
 	}
 	return nil
 }
+
+func ReadUDPMsg(conn *net.UDPConn, payload []byte, oob []byte) (int, int, int, *net.UDPAddr, error) {
+	return conn.ReadMsgUDP(payload, oob)
+}

+ 7 - 0
transport/internet/udp/hub_other.go

@@ -3,6 +3,8 @@
 package udp
 
 import (
+	"net"
+
 	v2net "github.com/v2ray/v2ray-core/common/net"
 )
 
@@ -13,3 +15,8 @@ func SetOriginalDestOptions(fd int) error {
 func RetrieveOriginalDest(oob []byte) v2net.Destination {
 	return nil
 }
+
+func ReadUDPMsg(conn *net.UDPConn, payload []byte, oob []byte) (int, int, int, *net.UDPAddr, error) {
+	nBytes, addr, err := conn.ReadFromUDP(payload)
+	return nBytes, 0, 0, addr, err
+}