From 7331accab350aaa56b4cafa8c2bc6037555be928 Mon Sep 17 00:00:00 2001 From: pagxir Date: Sat, 31 Oct 2015 22:16:02 +0800 Subject: [PATCH] try to recover socks5 connection on buggy proxy client --- src/local.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/local.c b/src/local.c index bf617e60..3c815727 100644 --- a/src/local.c +++ b/src/local.c @@ -358,6 +358,14 @@ static void server_recv_cb(EV_P_ ev_io *w, int revents) char *send_buf = (char *)&response; send(server->fd, send_buf, sizeof(response), 0); server->stage = 1; + + int off = (buf[1] & 0xff) + 2; + if (buf[0] == 0x05 && off < r) { + memmove(buf, buf + off, r - off); + r -= off; + continue; + } + return; } else if (server->stage == 1) { struct socks5_request *request = (struct socks5_request *)buf;