diff --git a/chain.go b/chain.go index d8ca5ab..105f500 100644 --- a/chain.go +++ b/chain.go @@ -340,7 +340,9 @@ func (c *ProxyChain) getHttp2Conn(header http.Header) (net.Conn, error) { return conn, nil } -// Use HTTP2 as transport to connect target addr +// Use HTTP2 as transport to connect target addr. +// +// BUG: SOCKS5 is ignored, only HTTP supported func (c *ProxyChain) http2Connect(addr string) (net.Conn, error) { if !c.Http2Enabled() { return nil, errors.New("HTTP2 is not enabled") diff --git a/forward.go b/forward.go index fcfd67f..b8601ac 100644 --- a/forward.go +++ b/forward.go @@ -111,6 +111,7 @@ func (node *cnode) run() { lconn, err := net.ListenUDP("udp", nil) if err != nil { glog.V(LWARNING).Infof("[udp] %s -> %s : %s", node.srcAddr, node.dstAddr, err) + node.err = err return } node.conn = lconn @@ -118,6 +119,7 @@ func (node *cnode) run() { tc, err := node.getUDPTunnel() if err != nil { glog.V(LWARNING).Infof("[udp-tun] %s -> %s : %s", node.srcAddr, node.dstAddr, err) + node.err = err return } node.conn = tc @@ -294,7 +296,7 @@ func (s *UdpForwardServer) ListenAndServe() error { } m[pkt.srcAddr.String()] = node go node.run() - glog.V(LDEBUG).Infof("[udp] %s -> %s : new client (%d)", pkt.srcAddr, pkt.dstAddr, len(m)) + glog.V(LINFO).Infof("[udp] %s -> %s : new client (%d)", pkt.srcAddr, pkt.dstAddr, len(m)) } select { diff --git a/socks.go b/socks.go index 41fe5bd..97dc18a 100644 --- a/socks.go +++ b/socks.go @@ -546,6 +546,7 @@ func (s *Socks5Server) tunnelUDP(uc *net.UDPConn, cc net.Conn, client bool) (err for { n, addr, err := uc.ReadFromUDP(b) if err != nil { + glog.V(LWARNING).Infof("[udp-tun] %s <- %s : %s", cc.RemoteAddr(), addr, err) errc <- err return } @@ -570,6 +571,7 @@ func (s *Socks5Server) tunnelUDP(uc *net.UDPConn, cc net.Conn, client bool) (err dgram = gosocks5.NewUDPDatagram( gosocks5.NewUDPHeader(uint16(n), 0, ToSocksAddr(addr)), b[:n]) if err := dgram.Write(cc); err != nil { + glog.V(LWARNING).Infof("[udp-tun] %s <- %s : %s", cc.RemoteAddr(), dgram.Header.Addr, err) errc <- err return } @@ -582,6 +584,7 @@ func (s *Socks5Server) tunnelUDP(uc *net.UDPConn, cc net.Conn, client bool) (err for { dgram, err := gosocks5.ReadUDPDatagram(cc) if err != nil { + glog.V(LWARNING).Infof("[udp-tun] %s -> 0 : %s", cc.RemoteAddr(), err) errc <- err return } @@ -605,6 +608,7 @@ func (s *Socks5Server) tunnelUDP(uc *net.UDPConn, cc net.Conn, client bool) (err continue // drop silently } if _, err := uc.WriteToUDP(dgram.Data, addr); err != nil { + glog.V(LWARNING).Infof("[udp-tun] %s -> %s : %s", cc.RemoteAddr(), addr, err) errc <- err return }