This commit is contained in:
rui.zheng 2015-03-25 17:16:18 +08:00
parent b0f02179f8
commit be75c8e182
2 changed files with 9 additions and 6 deletions

11
gost.go
View File

@ -341,7 +341,7 @@ func (g *Gost) srv(conn net.Conn) {
func tunnelUdp(conn net.Conn, uconn *net.UDPConn, rawUdp bool) (err error) { func tunnelUdp(conn net.Conn, uconn *net.UDPConn, rawUdp bool) (err error) {
rChan := make(chan error, 1) rChan := make(chan error, 1)
wChan := make(chan error, 1) wChan := make(chan error, 1)
var raddr net.Addr var raddr *net.UDPAddr
go func() { go func() {
for { for {
@ -357,7 +357,7 @@ func tunnelUdp(conn net.Conn, uconn *net.UDPConn, rawUdp bool) (err error) {
continue continue
} }
if rawUdp { if rawUdp {
if _, err = uconn.WriteTo(up.Data, addr); err != nil { if _, err = uconn.WriteToUDP(up.Data, addr); err != nil {
log.Println(err) log.Println(err)
} }
log.Println("r", up) log.Println("r", up)
@ -365,7 +365,8 @@ func tunnelUdp(conn net.Conn, uconn *net.UDPConn, rawUdp bool) (err error) {
up.Rsv = 0 up.Rsv = 0
buf := &bytes.Buffer{} buf := &bytes.Buffer{}
up.Write(buf) up.Write(buf)
if _, err := uconn.WriteTo(buf.Bytes(), raddr); err != nil { log.Println(raddr, buf.Bytes())
if _, err := uconn.WriteToUDP(buf.Bytes(), raddr); err != nil {
log.Println(err) log.Println(err)
} }
log.Println("r", up) log.Println("r", up)
@ -376,10 +377,10 @@ func tunnelUdp(conn net.Conn, uconn *net.UDPConn, rawUdp bool) (err error) {
go func() { go func() {
for { for {
b := make([]byte, 65797) b := make([]byte, 65797)
n, addr, err := uconn.ReadFrom(b) n, addr, err := uconn.ReadFromUDP(b)
if err != nil { if err != nil {
log.Println(err) log.Println(err)
continue return
} }
raddr = addr raddr = addr

View File

@ -1,12 +1,12 @@
package main package main
import ( import (
"bytes"
"encoding/binary" "encoding/binary"
"errors" "errors"
"fmt" "fmt"
"io" "io"
//"log" //"log"
"bytes"
"net" "net"
) )
@ -94,7 +94,9 @@ func NewCmd(cmd uint8, atype uint8, addr string, port uint16) *Cmd {
func ReadCmd(r io.Reader) (*Cmd, error) { func ReadCmd(r io.Reader) (*Cmd, error) {
b := make([]byte, 256) b := make([]byte, 256)
n, err := r.Read(b) n, err := r.Read(b)
//log.Println(b[:n])
if err != nil { if err != nil {
//log.Println(err)
return nil, err return nil, err
} }
if n < 10 { if n < 10 {