1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-12-21 09:36:34 -05:00

Update freedom connection for UDP

This commit is contained in:
V2Ray 2015-10-04 00:58:07 +02:00
parent 59a6e1cef8
commit 557f411f85

View File

@ -48,7 +48,7 @@ func (vconn *FreedomConnection) Start(ray core.OutboundRay) error {
go dumpInput(conn, input, &writeMutex)
}
go dumpOutput(conn, output, &readMutex)
go dumpOutput(conn, output, &readMutex, vconn.packet.Destination().IsUDP())
go func() {
writeMutex.Lock()
@ -67,8 +67,20 @@ func dumpInput(conn net.Conn, input <-chan []byte, finish *sync.Mutex) {
finish.Unlock()
}
func dumpOutput(conn net.Conn, output chan<- []byte, finish *sync.Mutex) {
func dumpOutput(conn net.Conn, output chan<- []byte, finish *sync.Mutex, udp bool) {
defer finish.Unlock()
defer close(output)
response, err := v2net.ReadFrom(conn)
if len(response) > 0 {
output <- response
}
if err != nil {
return
}
if udp {
return
}
v2net.ReaderToChan(output, conn)
finish.Unlock()
close(output)
}