Redirection fixes

This commit is contained in:
z3APA3A 2014-11-26 01:50:14 +03:00
parent b5bcb44e27
commit f82d1e296b
3 changed files with 11 additions and 11 deletions

View File

@ -267,14 +267,16 @@ int handleredirect(struct clientparam * param, struct ace * acentry){
return 0; return 0;
} }
else if(!cur->redirport && cur->redirip) { else if(!cur->redirport && cur->redirip) {
unsigned short port = *SAPORT(&param->sinsl); unsigned short port = *SAPORT(&param->sinsr);
memset(&param->sinsl, 0, sizeof(param->sinsl)); memset(&param->sinsl, 0, sizeof(param->sinsr));
*SAFAMILY(&param->sinsl) = AF_INET; *SAFAMILY(&param->sinsr) = AF_INET;
*(unsigned long *)SAADDR(&param->sinsl) = cur->redirip; *(unsigned long *)SAADDR(&param->sinsr) = cur->redirip;
*SAPORT(&param->sinsl) = port; *SAPORT(&param->sinsr) = port;
} }
else if(!cur->redirip && cur->redirport) *SAPORT(&param->sinsl) = cur->redirport; else if(!cur->redirip && cur->redirport) *SAPORT(&param->sinsr) = cur->redirport;
else if(*SAFAMILY(&param->req) == AF_INET){ else if(*SAFAMILY(&param->req) == AF_INET){
memset(&param->sinsr, 0, sizeof(param->sinsr));
*SAFAMILY(&param->sinsr) = AF_INET;
*(unsigned long *)SAADDR(&param->sinsr) = cur->redirip; *(unsigned long *)SAADDR(&param->sinsr) = cur->redirip;
*SAPORT(&param->sinsr) = cur->redirport; *SAPORT(&param->sinsr) = cur->redirport;
} }

View File

@ -619,12 +619,10 @@ int doconnect(struct clientparam * param){
if ((param->remsock=so._socket(*SAFAMILY(&param->sinsr), SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {return (11);} if ((param->remsock=so._socket(*SAFAMILY(&param->sinsr), SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {return (11);}
so._setsockopt(param->remsock, SOL_SOCKET, SO_LINGER, (unsigned char *)&lg, sizeof(lg)); so._setsockopt(param->remsock, SOL_SOCKET, SO_LINGER, (unsigned char *)&lg, sizeof(lg));
#ifndef NOIPV6 #ifndef NOIPV6
if(*SAFAMILY(&param->sinsr) == AF_INET) if(*SAFAMILY(&param->sinsr) == AF_INET6) memcpy(&param->sinsl, &param->srv->extsa6, sizeof(param->srv->extsa6));
else
#endif #endif
memcpy(&param->sinsl, &param->srv->extsa, sizeof(param->srv->extsa)); memcpy(&param->sinsl, &param->srv->extsa, sizeof(param->srv->extsa));
#ifndef NOIPV6
else memcpy(&param->sinsl, &param->srv->extsa6, sizeof(param->srv->extsa6));
#endif
if (param->srv->targetport && !*SAPORT(&param->sinsl) && ntohs(*SAPORT(&param->sincr)) > 1023) *SAPORT(&param->sinsl) = *SAPORT(&param->sincr); if (param->srv->targetport && !*SAPORT(&param->sinsl) && ntohs(*SAPORT(&param->sincr)) > 1023) *SAPORT(&param->sinsl) = *SAPORT(&param->sincr);
if(so._bind(param->remsock, (struct sockaddr*)&param->sinsl, sizeof(param->sinsl))==-1) { if(so._bind(param->remsock, (struct sockaddr*)&param->sinsl, sizeof(param->sinsl))==-1) {
#ifndef NOIPV6 #ifndef NOIPV6

View File

@ -1,2 +1,2 @@
#define VERSION "3proxy-0.8b-devel" #define VERSION "3proxy-0.8b-devel"
#define BUILDDATE "141109215219" #define BUILDDATE "141126014759"