From e44394ade5f3279df70355cfc4915c1b9915a15e Mon Sep 17 00:00:00 2001 From: Darien Raymond Date: Mon, 26 Mar 2018 16:56:19 +0200 Subject: [PATCH] more informational error --- proxy/socks/protocol.go | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/proxy/socks/protocol.go b/proxy/socks/protocol.go index 8aba9c5c..10c0f2d9 100644 --- a/proxy/socks/protocol.go +++ b/proxy/socks/protocol.go @@ -135,16 +135,21 @@ func (s *ServerSession) Handshake(reader io.Reader, writer io.Writer) (*protocol } cmd := buffer.Byte(1) - if cmd == cmdTCPBind || (cmd == cmdUDPPort && !s.config.UdpEnabled) { - writeSocks5Response(writer, statusCmdNotSupport, net.AnyIP, net.Port(0)) - return nil, newError("unsupported command: ", cmd) - } - switch cmd { case cmdTCPConnect: request.Command = protocol.RequestCommandTCP case cmdUDPPort: + if !s.config.UdpEnabled { + writeSocks5Response(writer, statusCmdNotSupport, net.AnyIP, net.Port(0)) + return nil, newError("UDP is not enabled.") + } request.Command = protocol.RequestCommandUDP + case cmdTCPBind: + writeSocks5Response(writer, statusCmdNotSupport, net.AnyIP, net.Port(0)) + return nil, newError("TCP bind is not supported.") + default: + writeSocks5Response(writer, statusCmdNotSupport, net.AnyIP, net.Port(0)) + return nil, newError("unknown command ", cmd) } buffer.Clear()