From b7c667a682734445cabba243df87e8cacd572fd7 Mon Sep 17 00:00:00 2001 From: Vladimir Dubrovin <3proxy@3proxy.ru> Date: Mon, 23 Apr 2018 01:55:08 +0300 Subject: [PATCH] Bugfixes for previous commit --- src/sockmap.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/sockmap.c b/src/sockmap.c index a43f340..ca2c33f 100644 --- a/src/sockmap.c +++ b/src/sockmap.c @@ -56,12 +56,12 @@ int splicemap(struct clientparam * param, int timeo){ if(socksend(param->clisock, param->srvbuf + param->srvoffset, tosend, conf.timeouts[STRING_S]) != tosend){ return 96; } - if(param->waitserver64) param->waitserver64 -= tosend; if(!needcontinue){ param->srvoffset += tosend; - param->srvinbuf -= tosend; - return 0; + if(param->srvoffset == param->srvinbuf) param->srvoffset = param->srvinbuf = 0; + return 98; } + received += tosend; param->srvoffset = param->srvinbuf = 0; } tosend = param->cliinbuf - param->clioffset; @@ -74,20 +74,23 @@ int splicemap(struct clientparam * param, int timeo){ if(socksend(param->remsock, param->clibuf + param->clioffset, tosend, conf.timeouts[STRING_S]) != tosend){ return 97; } - if(param->waitclient64) param->waitclient64 -= tosend; if(!needcontinue){ param->clioffset += tosend; - param->cliinbuf -= tosend; - return 0; + if(param->clioffset == param->cliinbuf) param->clioffset = param->cliinbuf = 0; + return 99; } - param->srvoffset = param->srvinbuf = 0; + sent += tosend; + param->clioffset = param->cliinbuf = 0; } if(!param->waitserver64 && !param->waitclient64){ myfree(param->srvbuf); param->srvbuf = NULL; - myfree(param->srvbuf); - param->srvbuf = NULL; + param->srvbufsize = 0; + myfree(param->clibuf); + param->clibuf = NULL; + param->clibufsize = 0; + param->srvinbuf = param->srvoffset = param->cliinbuf = param->clioffset = 0; } param->res = 0;