diff --git a/src/common.c b/src/common.c index b90175b..3a8b26e 100644 --- a/src/common.c +++ b/src/common.c @@ -669,11 +669,13 @@ int doconnect(struct clientparam * param){ } #endif + if(SAISNULL(¶m->sinsl)){ #ifndef NOIPV6 - if(*SAFAMILY(¶m->sinsr) == AF_INET6) param->sinsl = param->srv->extsa6; - else + if(*SAFAMILY(¶m->sinsr) == AF_INET6) param->sinsl = param->srv->extsa6; + else #endif - param->sinsl = param->srv->extsa; + param->sinsl = param->srv->extsa; + } *SAPORT(¶m->sinsl) = 0; if(so._bind(param->remsock, (struct sockaddr*)¶m->sinsl, SASIZE(¶m->sinsl))==-1) { return 12; diff --git a/src/proxy.c b/src/proxy.c index 07eed13..8ac62c4 100644 --- a/src/proxy.c +++ b/src/proxy.c @@ -152,7 +152,7 @@ static void logurl(struct clientparam * param, char * buf, char * req, int ftp){ strcpy(se, sb); } } - if(param->res != 555)(*param->srv->logfunc)(param, (unsigned char *)(req?buf:NULL)); + if(param->res != 555 && param->res != 508)(*param->srv->logfunc)(param, (unsigned char *)(req?buf:NULL)); } void decodeurl(unsigned char *s, int allowcr){ @@ -264,6 +264,9 @@ for(;;){ param->remsock = INVALID_SOCKET; param->redirected = 0; param->redirtype = 0; + memset(¶m->sinsl, 0, sizeof(param->sinsl)); + memset(¶m->sinsr, 0, sizeof(param->sinsr)); + memset(¶m->req, 0, sizeof(param->req)); } } @@ -284,6 +287,9 @@ for(;;){ param->remsock = INVALID_SOCKET; param->redirected = 0; param->redirtype = 0; + memset(¶m->sinsl, 0, sizeof(param->sinsl)); + memset(¶m->sinsr, 0, sizeof(param->sinsr)); + memset(¶m->req, 0, sizeof(param->req)); } myfree(req); }