From: Luke S. <lsc...@us...> - 2004-01-04 04:27:21
|
Update of /cvsroot/gaim/gaim/src In directory sc8-pr-cvs1:/tmp/cvs-serv19991/src Modified Files: proxy.c Log Message: " When any error condition is returned by a socks5 proxy, the debug window just shows "Bad data". This patch shows the error message corresponding to the returned error code, so that the user may know why the socks5 proxy is refusing to process the request. Background: I'd been trying to establish why I couldn't connect to MSN through SOCKS5. Adding this patch enabled me to see that it wsan't a bug in gaim as I'd originally thought, but that the proxy server I was using was configured to deny connections to nexus.passport.com:443." --Gavan Fantom (gavan) Index: proxy.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/proxy.c,v retrieving revision 1.80 retrieving revision 1.81 diff -u -d -p -r1.80 -r1.81 --- proxy.c 12 Dec 2003 00:14:39 -0000 1.80 +++ proxy.c 4 Jan 2004 04:27:17 -0000 1.81 @@ -59,6 +59,18 @@ typedef struct _GaimIOClosure { } GaimIOClosure; +const char* socks5errors[] = { + "succeeded\n", + "general SOCKS server failure\n", + "connection not allowed by ruleset\n", + "Network unreachable\n", + "Host unreachable\n", + "Connection refused\n", + "TTL expired\n", + "Command not supported\n", + "Address type not supported\n" +}; + /************************************************************************** * Proxy structure API **************************************************************************/ @@ -1316,7 +1328,10 @@ s5_canread_again(gpointer data, gint sou return; } if ((buf[0] != 0x05) || (buf[1] != 0x00)) { - gaim_debug(GAIM_DEBUG_ERROR, "socks5 proxy", "Bad data.\n"); + if ((buf[0] == 0x05) && (buf[1] < 0x09)) + gaim_debug(GAIM_DEBUG_ERROR, "socks5 proxy", socks5errors[buf[1]]); + else + gaim_debug(GAIM_DEBUG_ERROR, "socks5 proxy", "Bad data.\n"); close(source); if (phb->account == NULL || |