1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-12-30 05:56:54 -05:00

allow multiple UDP incoming packets in freedom

This commit is contained in:
Darien Raymond 2016-02-01 11:38:38 +00:00
parent d3ff2b3698
commit 3b1f92b7e8
2 changed files with 7 additions and 13 deletions

View File

@ -16,7 +16,7 @@ type TimeOutReader struct {
worker io.Reader
}
func NewTimeOutReader(timeout int, connection net.Conn) *TimeOutReader {
func NewTimeOutReader(timeout int /* seconds */, connection net.Conn) *TimeOutReader {
reader := &TimeOutReader{
connection: connection,
timeout: -100,

View File

@ -1,6 +1,7 @@
package freedom
import (
"io"
"net"
"sync"
@ -58,21 +59,14 @@ func (this *FreedomConnection) Dispatch(firstPacket v2net.Packet, ray ray.Outbou
defer readMutex.Unlock()
defer close(output)
response, err := v2io.ReadFrom(conn, nil)
log.Info("Freedom receives ", response.Len(), " bytes from ", conn.RemoteAddr())
if response.Len() > 0 {
output <- response
} else {
response.Release()
}
if err != nil {
return
}
var reader io.Reader
reader = conn
if firstPacket.Destination().IsUDP() {
return
reader = v2net.NewTimeOutReader(4 /* seconds */, conn)
}
v2io.RawReaderToChan(output, conn)
v2io.RawReaderToChan(output, reader)
}()
writeMutex.Lock()