diff --git a/http.go b/http.go index 0a61980..dbe269b 100644 --- a/http.go +++ b/http.go @@ -100,7 +100,7 @@ func (s *HttpServer) HandleRequest(req *http.Request) { s.conn.Write(b) } else { req.Header.Del("Proxy-Connection") - req.Header.Set("Connection", "Keep-Alive") + // req.Header.Set("Connection", "Keep-Alive") if err = req.Write(c); err != nil { glog.V(LWARNING).Infof("[http] %s -> %s : %s", s.conn.RemoteAddr(), req.Host, err) @@ -277,7 +277,7 @@ func (s *Http2Server) HandleRequest(w http.ResponseWriter, req *http.Request) { return } - req.Header.Set("Connection", "Keep-Alive") + // req.Header.Set("Connection", "Keep-Alive") if err = req.Write(c); err != nil { glog.V(LWARNING).Infof("[http2] %s -> %s : %s", req.RemoteAddr, target, err) return diff --git a/socks.go b/socks.go index fdeba52..15faa86 100644 --- a/socks.go +++ b/socks.go @@ -279,26 +279,25 @@ func (s *Socks5Server) handleUDPRelay(req *gosocks5.Request) { return } - bindAddr, _ := net.ResolveUDPAddr("udp", addr) - relay, err := net.ListenUDP("udp", bindAddr) // udp associate, strict mode: if the port already in use, it will return error + relay, err := net.ListenUDP("udp", nil) if err != nil { - glog.V(LWARNING).Infof("[socks5-udp] %s -> %s : %s", s.conn.RemoteAddr(), req.Addr, err) + glog.V(LWARNING).Infof("[socks5-udp] %s -> %s : %s", s.conn.RemoteAddr(), relay.LocalAddr(), err) reply := gosocks5.NewReply(gosocks5.Failure, nil) reply.Write(s.conn) - glog.V(LDEBUG).Infof("[socks5-udp] %s <- %s\n%s", s.conn.RemoteAddr(), req.Addr, reply) + glog.V(LDEBUG).Infof("[socks5-udp] %s <- %s\n%s", s.conn.RemoteAddr(), relay.LocalAddr(), reply) return } defer relay.Close() socksAddr := ToSocksAddr(relay.LocalAddr()) - socksAddr.Host, _, _ = net.SplitHostPort(s.conn.LocalAddr().String()) + socksAddr.Host, _, _ = net.SplitHostPort(s.conn.LocalAddr().String()) // replace the IP to out-going interface's reply := gosocks5.NewReply(gosocks5.Succeeded, socksAddr) if err := reply.Write(s.conn); err != nil { - glog.V(LWARNING).Infof("[socks5-udp] %s <- %s : %s", s.conn.RemoteAddr(), req.Addr, err) + glog.V(LWARNING).Infof("[socks5-udp] %s <- %s : %s", s.conn.RemoteAddr(), relay.LocalAddr(), err) return } glog.V(LDEBUG).Infof("[socks5-udp] %s <- %s\n%s", s.conn.RemoteAddr(), reply.Addr, reply) - glog.V(LINFO).Infof("[socks5-udp] %s - %s BIND ON %s OK", s.conn.RemoteAddr(), req.Addr, socksAddr) + glog.V(LINFO).Infof("[socks5-udp] %s - %s BIND ON %s OK", s.conn.RemoteAddr(), relay.LocalAddr(), socksAddr) cc, err := s.Base.Chain.GetConn() // connection error