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