mirror of
https://github.com/v2fly/v2ray-core.git
synced 2024-12-22 01:57:12 -05:00
Update freedom connection for UDP
This commit is contained in:
parent
59a6e1cef8
commit
557f411f85
@ -48,7 +48,7 @@ func (vconn *FreedomConnection) Start(ray core.OutboundRay) error {
|
|||||||
go dumpInput(conn, input, &writeMutex)
|
go dumpInput(conn, input, &writeMutex)
|
||||||
}
|
}
|
||||||
|
|
||||||
go dumpOutput(conn, output, &readMutex)
|
go dumpOutput(conn, output, &readMutex, vconn.packet.Destination().IsUDP())
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
writeMutex.Lock()
|
writeMutex.Lock()
|
||||||
@ -67,8 +67,20 @@ func dumpInput(conn net.Conn, input <-chan []byte, finish *sync.Mutex) {
|
|||||||
finish.Unlock()
|
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)
|
v2net.ReaderToChan(output, conn)
|
||||||
finish.Unlock()
|
|
||||||
close(output)
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user