From f036cc0a069d76bb9e0434f2a89d3db30fde29d8 Mon Sep 17 00:00:00 2001 From: clowwindy Date: Sat, 29 Dec 2012 21:26:30 +0800 Subject: [PATCH] fix data corruption caused by using wrong buffer --- jni/shadowsocks/local.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/jni/shadowsocks/local.c b/jni/shadowsocks/local.c index 23385ecd..b708d9dd 100644 --- a/jni/shadowsocks/local.c +++ b/jni/shadowsocks/local.c @@ -98,15 +98,14 @@ static void server_recv_cb (EV_P_ ev_io *w, int revents) { close_and_free_server(EV_A_ server); return; } - - char *buf = remote->buf; - int *buf_len = &remote->buf_len; - if (server->stage != 5) { - buf = server->buf; - buf_len = &server->buf_len; - } - while (1) { + char *buf = remote->buf; + int *buf_len = &remote->buf_len; + if (server->stage != 5) { + buf = server->buf; + buf_len = &server->buf_len; + } + ssize_t r = recv(server->fd, buf, BUF_SIZE, 0); if (r == 0) {