fix udp transfer

This commit is contained in:
rui.zheng 2015-03-25 16:24:17 +08:00
parent 6d0efaeb07
commit b0f02179f8

18
gost.go
View File

@ -353,13 +353,12 @@ func tunnelUdp(conn net.Conn, uconn *net.UDPConn, rawUdp bool) (err error) {
addr, err := net.ResolveUDPAddr("udp", net.JoinHostPort(up.Addr, strconv.Itoa(int(up.Port))))
if err != nil {
rChan <- err
return
log.Println(err)
continue
}
if rawUdp {
if _, err = uconn.WriteTo(up.Data, addr); err != nil {
rChan <- err
return
log.Println(err)
}
log.Println("r", up)
} else {
@ -367,8 +366,7 @@ func tunnelUdp(conn net.Conn, uconn *net.UDPConn, rawUdp bool) (err error) {
buf := &bytes.Buffer{}
up.Write(buf)
if _, err := uconn.WriteTo(buf.Bytes(), raddr); err != nil {
rChan <- err
return
log.Println(err)
}
log.Println("r", up)
}
@ -380,8 +378,8 @@ func tunnelUdp(conn net.Conn, uconn *net.UDPConn, rawUdp bool) (err error) {
b := make([]byte, 65797)
n, addr, err := uconn.ReadFrom(b)
if err != nil {
wChan <- err
return
log.Println(err)
continue
}
raddr = addr
@ -400,8 +398,8 @@ func tunnelUdp(conn net.Conn, uconn *net.UDPConn, rawUdp bool) (err error) {
rbuf := bytes.NewReader(b[:n])
up, err := ReadUdpPayload(rbuf)
if err != nil {
wChan <- err
return
log.Println(err)
continue
}
up.Rsv = uint16(len(up.Data))
if err := up.Write(conn); err != nil {