func (h *tunnelConnHandler) serveWithMux(conn net.Conn) { server := mux.NewServer(conn) for { stream, err := server.Accept() if err != nil { log.Printf("error to accept new mux streams: %s", err) server.Close() return } go func(cc net.Conn) { s, err := net.DialTimeout("tcp", h.socksAddr, h.socksTimeout) if err != nil { log.Printf("error connecting SOCKS server: %s", err) cc.Close() return } socks := &gosocks.SocksConn{s.(net.Conn), h.socksTimeout} if h.socksAuth.ServerAuthenticate(cc, socks) != nil { cc.Close() socks.Close() return } sockstun.TunnelServer(cc, socks) }(stream) } }
func (h *tunnelConnHandler) serveWithoutMux(conn net.Conn) { s, err := net.DialTimeout("tcp", h.socksAddr, h.socksTimeout) if err != nil { log.Printf("error connecting SOCKS server: %s", err) conn.Close() return } socks := &gosocks.SocksConn{s.(net.Conn), h.socksTimeout} if h.socksAuth.ServerAuthenticate(conn, socks) != nil { conn.Close() socks.Close() return } sockstun.TunnelServer(conn, socks) }