mirror of
				https://github.com/3proxy/3proxy.git
				synced 2025-11-04 07:42:39 +08:00 
			
		
		
		
	Replace memcpy with assignment where appropriate
This commit is contained in:
		
							parent
							
								
									3cc9796583
								
							
						
					
					
						commit
						13a7d6be11
					
				@ -139,7 +139,7 @@ int timechanged (time_t oldtime, time_t newtime, ROTATION lt){
 | 
				
			|||||||
	struct tm tmold;
 | 
						struct tm tmold;
 | 
				
			||||||
	struct tm *tm;
 | 
						struct tm *tm;
 | 
				
			||||||
	tm = localtime(&oldtime);
 | 
						tm = localtime(&oldtime);
 | 
				
			||||||
	memcpy(&tmold, tm, sizeof(tmold));
 | 
						tmold = *tm;
 | 
				
			||||||
	tm = localtime(&newtime);
 | 
						tm = localtime(&newtime);
 | 
				
			||||||
	switch(lt){
 | 
						switch(lt){
 | 
				
			||||||
		case MINUTELY:
 | 
							case MINUTELY:
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										33
									
								
								src/auth.c
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								src/auth.c
									
									
									
									
									
								
							@ -242,7 +242,7 @@ int handleredirect(struct clientparam * param, struct ace * acentry){
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
		if(!connected){
 | 
							if(!connected){
 | 
				
			||||||
			if(cur->type == R_EXTIP){
 | 
								if(cur->type == R_EXTIP){
 | 
				
			||||||
				memcpy(¶m->sinsl, &cur->addr, sizeof(cur->addr)); 
 | 
									param->sinsl = cur->addr;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			else if(SAISNULL(&cur->addr) && !*SAPORT(&cur->addr)){
 | 
								else if(SAISNULL(&cur->addr) && !*SAPORT(&cur->addr)){
 | 
				
			||||||
				if(cur->extuser){
 | 
									if(cur->extuser){
 | 
				
			||||||
@ -280,12 +280,12 @@ int handleredirect(struct clientparam * param, struct ace * acentry){
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
			else if(!*SAPORT(&cur->addr) && !SAISNULL(&cur->addr)) {
 | 
								else if(!*SAPORT(&cur->addr) && !SAISNULL(&cur->addr)) {
 | 
				
			||||||
				unsigned short port = *SAPORT(¶m->sinsr);
 | 
									unsigned short port = *SAPORT(¶m->sinsr);
 | 
				
			||||||
				memcpy(¶m->sinsr, &cur->addr, SASIZE(&cur->addr)); 
 | 
									param->sinsr = cur->addr;
 | 
				
			||||||
				*SAPORT(¶m->sinsr) = port;
 | 
									*SAPORT(¶m->sinsr) = port;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			else if(SAISNULL(&cur->addr) && *SAPORT(&cur->addr)) *SAPORT(¶m->sinsr) = *SAPORT(&cur->addr);
 | 
								else if(SAISNULL(&cur->addr) && *SAPORT(&cur->addr)) *SAPORT(¶m->sinsr) = *SAPORT(&cur->addr);
 | 
				
			||||||
			else {
 | 
								else {
 | 
				
			||||||
				memcpy(¶m->sinsr, &cur->addr, SASIZE(&cur->addr)); 
 | 
									param->sinsr = cur->addr;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if((res = alwaysauth(param))){
 | 
								if((res = alwaysauth(param))){
 | 
				
			||||||
@ -609,7 +609,7 @@ int checkACL(struct clientparam * param){
 | 
				
			|||||||
				if(param->redirected && acentry->chains && SAISNULL(&acentry->chains->addr) && !*SAPORT(&acentry->chains->addr)) {
 | 
									if(param->redirected && acentry->chains && SAISNULL(&acentry->chains->addr) && !*SAPORT(&acentry->chains->addr)) {
 | 
				
			||||||
					continue;
 | 
										continue;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				memcpy(&dup, acentry, sizeof(struct ace));
 | 
									dup = *acentry;
 | 
				
			||||||
				return handleredirect(param, &dup);
 | 
									return handleredirect(param, &dup);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			return acentry->action;
 | 
								return acentry->action;
 | 
				
			||||||
@ -700,7 +700,7 @@ int doauth(struct clientparam * param){
 | 
				
			|||||||
							ac->password = mystrdup(param->password);
 | 
												ac->password = mystrdup(param->password);
 | 
				
			||||||
							myfree(tmp);
 | 
												myfree(tmp);
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
						memcpy(&ac->sa, ¶m->sincr, SASIZE(¶m->sincr));
 | 
											ac->sa = param->sincr;
 | 
				
			||||||
						break;
 | 
											break;
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
@ -709,7 +709,7 @@ int doauth(struct clientparam * param){
 | 
				
			|||||||
					if(ac){
 | 
										if(ac){
 | 
				
			||||||
						ac->expires = conf.time + conf.authcachetime;
 | 
											ac->expires = conf.time + conf.authcachetime;
 | 
				
			||||||
						ac->username = mystrdup(param->username);
 | 
											ac->username = mystrdup(param->username);
 | 
				
			||||||
						memcpy(&ac->sa, ¶m->sincr, SASIZE(¶m->sincr));
 | 
											ac->sa = param->sincr;
 | 
				
			||||||
						ac->password = NULL;
 | 
											ac->password = NULL;
 | 
				
			||||||
						if((conf.authcachetype&4) && param->password) ac->password = mystrdup(param->password);
 | 
											if((conf.authcachetype&4) && param->password) ac->password = mystrdup(param->password);
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
@ -1038,17 +1038,18 @@ unsigned long udpresolve(int af, unsigned char * name, unsigned char * value, un
 | 
				
			|||||||
		unsigned ttl;
 | 
							unsigned ttl;
 | 
				
			||||||
#ifndef NOIPV6
 | 
					#ifndef NOIPV6
 | 
				
			||||||
		struct sockaddr_in6 addr;
 | 
							struct sockaddr_in6 addr;
 | 
				
			||||||
 | 
							struct sockaddr_in6 *sinsr, *sinsl;
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
		struct sockaddr_in addr;
 | 
							struct sockaddr_in addr;
 | 
				
			||||||
 | 
							struct sockaddr_in *sinsr, *sinsl;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
		struct sockaddr *sinsr, *sinsl;
 | 
					 | 
				
			||||||
		int usetcp = 0;
 | 
							int usetcp = 0;
 | 
				
			||||||
		unsigned short serial = 1;
 | 
							unsigned short serial = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		buf = b+2;
 | 
							buf = b+2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		sinsl = (param && !makeauth)? (struct sockaddr *)¶m->sinsl : (struct sockaddr *)&addr;
 | 
							sinsl = (param && !makeauth)? ¶m->sinsl : &addr;
 | 
				
			||||||
		sinsr = (param && !makeauth)? (struct sockaddr *)¶m->sinsr : (struct sockaddr *)&addr;
 | 
							sinsr = (param && !makeauth)? ¶m->sinsr : &addr;
 | 
				
			||||||
		memset(sinsl, 0, sizeof(addr));
 | 
							memset(sinsl, 0, sizeof(addr));
 | 
				
			||||||
		memset(sinsr, 0, sizeof(addr));
 | 
							memset(sinsr, 0, sizeof(addr));
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
@ -1062,19 +1063,19 @@ unsigned long udpresolve(int af, unsigned char * name, unsigned char * value, un
 | 
				
			|||||||
			*SAFAMILY(sinsl) = *SAFAMILY(&nservers[i].addr);
 | 
								*SAFAMILY(sinsl) = *SAFAMILY(&nservers[i].addr);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if((sock=so._socket(SASOCK(sinsl), usetcp?SOCK_STREAM:SOCK_DGRAM, usetcp?IPPROTO_TCP:IPPROTO_UDP)) == INVALID_SOCKET) break;
 | 
							if((sock=so._socket(SASOCK(sinsl), usetcp?SOCK_STREAM:SOCK_DGRAM, usetcp?IPPROTO_TCP:IPPROTO_UDP)) == INVALID_SOCKET) break;
 | 
				
			||||||
		if(so._bind(sock,sinsl,SASIZE(sinsl))){
 | 
							if(so._bind(sock,(struct sockaddr *)sinsl,SASIZE(sinsl))){
 | 
				
			||||||
			so._shutdown(sock, SHUT_RDWR);
 | 
								so._shutdown(sock, SHUT_RDWR);
 | 
				
			||||||
			so._closesocket(sock);
 | 
								so._closesocket(sock);
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if(makeauth && !SAISNULL(&authnserver.addr)){
 | 
							if(makeauth && !SAISNULL(&authnserver.addr)){
 | 
				
			||||||
			memcpy(sinsr, &authnserver.addr, sizeof(authnserver.addr));
 | 
								*sinsr = authnserver.addr;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		else {
 | 
							else {
 | 
				
			||||||
			memcpy(sinsr, &nservers[i].addr, sizeof(nservers[i].addr));
 | 
								*sinsr = nservers[i].addr;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if(usetcp){
 | 
							if(usetcp){
 | 
				
			||||||
			if(so._connect(sock,sinsr,SASIZE(sinsr))) {
 | 
								if(so._connect(sock,(struct sockaddr *)sinsr,SASIZE(sinsr))) {
 | 
				
			||||||
				so._shutdown(sock, SHUT_RDWR);
 | 
									so._shutdown(sock, SHUT_RDWR);
 | 
				
			||||||
				so._closesocket(sock);
 | 
									so._closesocket(sock);
 | 
				
			||||||
				break;
 | 
									break;
 | 
				
			||||||
@ -1110,13 +1111,13 @@ unsigned long udpresolve(int af, unsigned char * name, unsigned char * value, un
 | 
				
			|||||||
			len+=2;
 | 
								len+=2;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if(socksendto(sock, sinsr, buf, len, conf.timeouts[SINGLEBYTE_L]*1000) != len){
 | 
							if(socksendto(sock, (struct sockaddr *)sinsr, buf, len, conf.timeouts[SINGLEBYTE_L]*1000) != len){
 | 
				
			||||||
			so._shutdown(sock, SHUT_RDWR);
 | 
								so._shutdown(sock, SHUT_RDWR);
 | 
				
			||||||
			so._closesocket(sock);
 | 
								so._closesocket(sock);
 | 
				
			||||||
			continue;
 | 
								continue;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if(param) param->statscli64 += len;
 | 
							if(param) param->statscli64 += len;
 | 
				
			||||||
		len = sockrecvfrom(sock, sinsr, buf, 4096, conf.timeouts[DNS_TO]*1000);
 | 
							len = sockrecvfrom(sock, (struct sockaddr *)sinsr, buf, 4096, conf.timeouts[DNS_TO]*1000);
 | 
				
			||||||
		so._shutdown(sock, SHUT_RDWR);
 | 
							so._shutdown(sock, SHUT_RDWR);
 | 
				
			||||||
		so._closesocket(sock);
 | 
							so._closesocket(sock);
 | 
				
			||||||
		if(len <= 13) {
 | 
							if(len <= 13) {
 | 
				
			||||||
@ -1128,7 +1129,7 @@ unsigned long udpresolve(int af, unsigned char * name, unsigned char * value, un
 | 
				
			|||||||
			us = ntohs(*(unsigned short*)buf);
 | 
								us = ntohs(*(unsigned short*)buf);
 | 
				
			||||||
			len-=2;
 | 
								len-=2;
 | 
				
			||||||
			buf+=2;
 | 
								buf+=2;
 | 
				
			||||||
			if(us > 4096 || us < len || (us > len && sockrecvfrom(sock, sinsr, buf+len, us-len, conf.timeouts[DNS_TO]*1000) != us-len)) {
 | 
								if(us > 4096 || us < len || (us > len && sockrecvfrom(sock, (struct sockaddr *)sinsr, buf+len, us-len, conf.timeouts[DNS_TO]*1000) != us-len)) {
 | 
				
			||||||
				continue;
 | 
									continue;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
				
			|||||||
@ -676,10 +676,10 @@ int doconnect(struct clientparam * param){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	if(SAISNULL(¶m->sinsl)){
 | 
						if(SAISNULL(¶m->sinsl)){
 | 
				
			||||||
#ifndef NOIPV6
 | 
					#ifndef NOIPV6
 | 
				
			||||||
		if(*SAFAMILY(¶m->sinsr) == AF_INET6) memcpy(¶m->sinsl, ¶m->srv->extsa6, sizeof(param->srv->extsa6));
 | 
							if(*SAFAMILY(¶m->sinsr) == AF_INET6) param->sinsl = param->srv->extsa6;
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
			memcpy(¶m->sinsl, ¶m->srv->extsa, sizeof(param->srv->extsa));
 | 
								param->sinsl = param->srv->extsa;
 | 
				
			||||||
		*SAPORT(¶m->sinsl) = 0;
 | 
							*SAPORT(¶m->sinsl) = 0;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if(so._bind(param->remsock, (struct sockaddr*)¶m->sinsl, SASIZE(¶m->sinsl))==-1) {
 | 
						if(so._bind(param->remsock, (struct sockaddr*)¶m->sinsl, SASIZE(¶m->sinsl))==-1) {
 | 
				
			||||||
 | 
				
			|||||||
@ -274,7 +274,8 @@ static int h_external(int argc, unsigned char ** argv){
 | 
				
			|||||||
	memset(&sa6, 0, sizeof(sa6));
 | 
						memset(&sa6, 0, sizeof(sa6));
 | 
				
			||||||
	res = getip46(46, argv[1], (struct sockaddr *)&sa6);
 | 
						res = getip46(46, argv[1], (struct sockaddr *)&sa6);
 | 
				
			||||||
	if(!res) return 1; 
 | 
						if(!res) return 1; 
 | 
				
			||||||
	memcpy((*SAFAMILY(&sa6)==AF_INET)?(void *)&conf.extsa:(void *)&conf.extsa6, &sa6, sizeof(sa6)); 
 | 
						if (*SAFAMILY(&sa6)==AF_INET) conf.extsa = sa6;
 | 
				
			||||||
 | 
						else conf.extsa6 = sa6;
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
	res = getip46(46, argv[1], (struct sockaddr *)&conf.extsa);
 | 
						res = getip46(46, argv[1], (struct sockaddr *)&conf.extsa);
 | 
				
			||||||
	if(!res) return 1; 
 | 
						if(!res) return 1; 
 | 
				
			||||||
 | 
				
			|||||||
@ -138,7 +138,7 @@ void * dnsprchild(struct clientparam* param) {
 | 
				
			|||||||
	if(so._bind(param->remsock,(struct sockaddr *)¶m->sinsl,SASIZE(¶m->sinsl))) {
 | 
						if(so._bind(param->remsock,(struct sockaddr *)¶m->sinsl,SASIZE(¶m->sinsl))) {
 | 
				
			||||||
		RETURN(819);
 | 
							RETURN(819);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	memcpy(¶m->sinsr, &nservers[0].addr, sizeof(param->sinsr));
 | 
						param->sinsr = nservers[0].addr;
 | 
				
			||||||
	if(nservers[0].usetcp) {
 | 
						if(nservers[0].usetcp) {
 | 
				
			||||||
		if(so._connect(param->remsock,(struct sockaddr *)¶m->sinsr,SASIZE(¶m->sinsr))) RETURN(830);
 | 
							if(so._connect(param->remsock,(struct sockaddr *)¶m->sinsr,SASIZE(¶m->sinsr))) RETURN(830);
 | 
				
			||||||
		buf-=2;
 | 
							buf-=2;
 | 
				
			||||||
 | 
				
			|||||||
@ -189,7 +189,7 @@ SOCKET ftpdata(struct clientparam *param){
 | 
				
			|||||||
	if(sscanf(sb+1, "%lu,%lu,%lu,%lu,%hu,%hu", &b1, &b2, &b3, &b4, &b5, &b6)!=6) return INVALID_SOCKET;
 | 
						if(sscanf(sb+1, "%lu,%lu,%lu,%lu,%hu,%hu", &b1, &b2, &b3, &b4, &b5, &b6)!=6) return INVALID_SOCKET;
 | 
				
			||||||
	rem = param->remsock;
 | 
						rem = param->remsock;
 | 
				
			||||||
	param->remsock = INVALID_SOCKET;
 | 
						param->remsock = INVALID_SOCKET;
 | 
				
			||||||
	memcpy(¶m->req,¶m->sinsr,sizeof(param->req));
 | 
						param->req = param->sinsr;
 | 
				
			||||||
	*SAPORT(¶m->req) = *SAPORT(¶m->sinsr) = htons((unsigned short)((b5<<8)^b6));
 | 
						*SAPORT(¶m->req) = *SAPORT(¶m->sinsr) = htons((unsigned short)((b5<<8)^b6));
 | 
				
			||||||
	i = param->operation;
 | 
						i = param->operation;
 | 
				
			||||||
	param->operation = FTP_DATA;
 | 
						param->operation = FTP_DATA;
 | 
				
			||||||
 | 
				
			|||||||
@ -26,7 +26,7 @@ void * threadfunc (void *p) {
 | 
				
			|||||||
			continue;
 | 
								continue;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
#ifndef WITHMAIN
 | 
					#ifndef WITHMAIN
 | 
				
			||||||
		memcpy(¶m->req, ¶m->sinsr, size);
 | 
							param->req = param->sinsr;
 | 
				
			||||||
		if(param->srv->acl) param->res = checkACL(param);
 | 
							if(param->srv->acl) param->res = checkACL(param);
 | 
				
			||||||
		if(param->res){
 | 
							if(param->res){
 | 
				
			||||||
			param->srv->logfunc(param, "Connect back ACL failed");
 | 
								param->srv->logfunc(param, "Connect back ACL failed");
 | 
				
			||||||
@ -240,7 +240,10 @@ int MODULEMAINFUNC (int argc, char** argv){
 | 
				
			|||||||
				struct sockaddr_in6 sa6;
 | 
									struct sockaddr_in6 sa6;
 | 
				
			||||||
				memset(&sa6, 0, sizeof(sa6));
 | 
									memset(&sa6, 0, sizeof(sa6));
 | 
				
			||||||
				error = !getip46(46, argv[i]+2, (struct sockaddr *)&sa6);
 | 
									error = !getip46(46, argv[i]+2, (struct sockaddr *)&sa6);
 | 
				
			||||||
				if(!error) memcpy((*SAFAMILY(&sa6)==AF_INET)?(void *)&srv.extsa:(void *)&srv.extsa6, &sa6, sizeof(sa6)); 
 | 
									if(!error) {
 | 
				
			||||||
 | 
										if (*SAFAMILY(&sa6)==AF_INET) srv.extsa = sa6;
 | 
				
			||||||
 | 
										else srv.extsa6 = sa6;
 | 
				
			||||||
 | 
									} 
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
				error = !getip46(46, argv[i]+2, (struct sockaddr *)&srv.extsa);
 | 
									error = !getip46(46, argv[i]+2, (struct sockaddr *)&srv.extsa);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@ -386,7 +389,7 @@ int MODULEMAINFUNC (int argc, char** argv){
 | 
				
			|||||||
	if(! (newparam = myalloc (sizeof(defparam)))){
 | 
						if(! (newparam = myalloc (sizeof(defparam)))){
 | 
				
			||||||
		return 2;
 | 
							return 2;
 | 
				
			||||||
	};
 | 
						};
 | 
				
			||||||
	memcpy(newparam, &defparam, sizeof(defparam));
 | 
						*newparam = defparam;
 | 
				
			||||||
	return((*srv.pf)((void *)newparam)? 1:0);
 | 
						return((*srv.pf)((void *)newparam)? 1:0);
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
@ -621,7 +624,7 @@ int MODULEMAINFUNC (int argc, char** argv){
 | 
				
			|||||||
		usleep(SLEEPTIME);
 | 
							usleep(SLEEPTIME);
 | 
				
			||||||
		continue;
 | 
							continue;
 | 
				
			||||||
	};
 | 
						};
 | 
				
			||||||
	memcpy(newparam, &defparam, sizeof(defparam));
 | 
						*newparam = defparam;
 | 
				
			||||||
	if(defparam.hostname)newparam->hostname=strdup(defparam.hostname);
 | 
						if(defparam.hostname)newparam->hostname=strdup(defparam.hostname);
 | 
				
			||||||
	clearstat(newparam);
 | 
						clearstat(newparam);
 | 
				
			||||||
	if(!isudp) newparam->clisock = new_sock;
 | 
						if(!isudp) newparam->clisock = new_sock;
 | 
				
			||||||
@ -721,10 +724,10 @@ void srvinit(struct srvparam * srv, struct clientparam *param){
 | 
				
			|||||||
 param->remsock = param->clisock = param->ctrlsock = param->ctrlsocksrv = INVALID_SOCKET;
 | 
					 param->remsock = param->clisock = param->ctrlsock = param->ctrlsocksrv = INVALID_SOCKET;
 | 
				
			||||||
 *SAFAMILY(¶m->req) = *SAFAMILY(¶m->sinsl) = *SAFAMILY(¶m->sinsr) = *SAFAMILY(¶m->sincr) = *SAFAMILY(¶m->sincl) = AF_INET;
 | 
					 *SAFAMILY(¶m->req) = *SAFAMILY(¶m->sinsl) = *SAFAMILY(¶m->sinsr) = *SAFAMILY(¶m->sincr) = *SAFAMILY(¶m->sincl) = AF_INET;
 | 
				
			||||||
 pthread_mutex_init(&srv->counter_mutex, NULL);
 | 
					 pthread_mutex_init(&srv->counter_mutex, NULL);
 | 
				
			||||||
 memcpy(&srv->intsa, &conf.intsa, sizeof(srv->intsa));
 | 
					 srv->intsa = conf.intsa;
 | 
				
			||||||
 memcpy(&srv->extsa, &conf.extsa, sizeof(srv->extsa));
 | 
					 srv->extsa = conf.extsa;
 | 
				
			||||||
#ifndef NOIPV6
 | 
					#ifndef NOIPV6
 | 
				
			||||||
 memcpy(&srv->extsa6, &conf.extsa6, sizeof(srv->extsa6));
 | 
					 srv->extsa6 = conf.extsa6;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -748,13 +751,12 @@ void srvinit2(struct srvparam * srv, struct clientparam *param){
 | 
				
			|||||||
 *SAFAMILY(¶m->sinsl) = AF_INET;
 | 
					 *SAFAMILY(¶m->sinsl) = AF_INET;
 | 
				
			||||||
 *SAFAMILY(¶m->sinsr) = AF_INET;
 | 
					 *SAFAMILY(¶m->sinsr) = AF_INET;
 | 
				
			||||||
 *SAFAMILY(¶m->req) = AF_INET;
 | 
					 *SAFAMILY(¶m->req) = AF_INET;
 | 
				
			||||||
 memcpy(¶m->sincr, &srv->intsa, sizeof(param->sincr));
 | 
					 param->sincr = param->sincl = srv->intsa;
 | 
				
			||||||
 memcpy(¶m->sincl, &srv->intsa, sizeof(param->sincl));
 | 
					 | 
				
			||||||
#ifndef NOIPV6
 | 
					#ifndef NOIPV6
 | 
				
			||||||
 memcpy(¶m->sinsr, (srv->family == 6 || srv->family == 64)? (void *)&srv->extsa6: (void *)&srv->extsa, sizeof(param->sinsr));
 | 
					 if (srv->family == 6 || srv->family == 64) param->sinsr = srv->extsa6;
 | 
				
			||||||
#else
 | 
					 else 
 | 
				
			||||||
 memcpy(¶m->sinsr, &srv->extsa, sizeof(param->sinsr));
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
						param->sinsr = srv->extsa;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void srvfree(struct srvparam * srv){
 | 
					void srvfree(struct srvparam * srv){
 | 
				
			||||||
@ -911,7 +913,7 @@ void copyfilter (struct filter *filter, struct srvparam *srv){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	if(!filter->filter_open || !(data = (*filter->filter_open)(filter->data, srv))) continue;
 | 
						if(!filter->filter_open || !(data = (*filter->filter_open)(filter->data, srv))) continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	memcpy(srv->filter + srv->nfilters, filter, sizeof(struct filter));
 | 
						srv->filter[srv->nfilters] = *filter;
 | 
				
			||||||
	srv->filter[srv->nfilters].data = data;
 | 
						srv->filter[srv->nfilters].data = data;
 | 
				
			||||||
	if(srv->nfilters>0)srv->filter[srv->nfilters - 1].next = srv->filter + srv->nfilters;
 | 
						if(srv->nfilters>0)srv->filter[srv->nfilters - 1].next = srv->filter + srv->nfilters;
 | 
				
			||||||
	srv->nfilters++;
 | 
						srv->nfilters++;
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										12
									
								
								src/socks.c
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								src/socks.c
									
									
									
									
									
								
							@ -133,7 +133,7 @@ void * sockschild(struct clientparam* param) {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
		buf[i] = 0;
 | 
							buf[i] = 0;
 | 
				
			||||||
		if(!getip46(param->srv->family, buf, (struct sockaddr *) ¶m->req)) RETURN(100);
 | 
							if(!getip46(param->srv->family, buf, (struct sockaddr *) ¶m->req)) RETURN(100);
 | 
				
			||||||
		memcpy(¶m->sinsr, ¶m->req, sizeof(param->req));
 | 
							param->sinsr = param->req;
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	default:
 | 
						default:
 | 
				
			||||||
		RETURN(997);
 | 
							RETURN(997);
 | 
				
			||||||
@ -159,7 +159,7 @@ void * sockschild(struct clientparam* param) {
 | 
				
			|||||||
		if(param->hostname)myfree(param->hostname);
 | 
							if(param->hostname)myfree(param->hostname);
 | 
				
			||||||
		param->hostname = (unsigned char *)mystrdup((char *)buf);
 | 
							param->hostname = (unsigned char *)mystrdup((char *)buf);
 | 
				
			||||||
		if(!getip46(param->srv->family, buf, (struct sockaddr *) ¶m->req)) RETURN(100);
 | 
							if(!getip46(param->srv->family, buf, (struct sockaddr *) ¶m->req)) RETURN(100);
 | 
				
			||||||
		memcpy(¶m->sinsr, ¶m->req, sizeof(¶m->req));
 | 
							param->sinsr = param->req;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -173,9 +173,9 @@ void * sockschild(struct clientparam* param) {
 | 
				
			|||||||
	case 3:
 | 
						case 3:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef NOIPV6	 
 | 
					#ifndef NOIPV6	 
 | 
				
			||||||
	 memcpy(¶m->sinsl, *SAFAMILY(¶m->req)==AF_INET6? (struct sockaddr *)¶m->srv->extsa6:(struct sockaddr *)¶m->srv->extsa, SASIZE(¶m->req)); 
 | 
						 param->sinsl = *SAFAMILY(¶m->req)==AF_INET6? param->srv->extsa6 : param->srv->extsa;
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
	 memcpy(¶m->sinsl, ¶m->srv->extsa, SASIZE(¶m->req)); 
 | 
						 param->sinsl = param->srv->extsa;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
	 if ((param->remsock=so._socket(SASOCK(¶m->req), command == 2? SOCK_STREAM:SOCK_DGRAM, command == 2?IPPROTO_TCP:IPPROTO_UDP)) == INVALID_SOCKET) {RETURN (11);}
 | 
						 if ((param->remsock=so._socket(SASOCK(¶m->req), command == 2? SOCK_STREAM:SOCK_DGRAM, command == 2?IPPROTO_TCP:IPPROTO_UDP)) == INVALID_SOCKET) {RETURN (11);}
 | 
				
			||||||
	 param->operation = command == 2?BIND:UDPASSOC;
 | 
						 param->operation = command == 2?BIND:UDPASSOC;
 | 
				
			||||||
@ -218,7 +218,7 @@ fflush(stderr);
 | 
				
			|||||||
		param->ctrlsock = param->clisock;
 | 
							param->ctrlsock = param->clisock;
 | 
				
			||||||
		param->clisock = so._socket(SASOCK(¶m->sincr), SOCK_DGRAM, IPPROTO_UDP);
 | 
							param->clisock = so._socket(SASOCK(¶m->sincr), SOCK_DGRAM, IPPROTO_UDP);
 | 
				
			||||||
		if(param->clisock == INVALID_SOCKET) {RETURN(11);}
 | 
							if(param->clisock == INVALID_SOCKET) {RETURN(11);}
 | 
				
			||||||
		memcpy(&sin, ¶m->sincl, sizeof(&sin));
 | 
							sin = param->sincl;
 | 
				
			||||||
		*SAPORT(&sin) = 0;
 | 
							*SAPORT(&sin) = 0;
 | 
				
			||||||
		if(so._bind(param->clisock,(struct sockaddr *)&sin,SASIZE(&sin))) {RETURN (12);}
 | 
							if(so._bind(param->clisock,(struct sockaddr *)&sin,SASIZE(&sin))) {RETURN (12);}
 | 
				
			||||||
#if SOCKSTRACE > 0
 | 
					#if SOCKSTRACE > 0
 | 
				
			||||||
@ -328,7 +328,7 @@ fflush(stderr);
 | 
				
			|||||||
				param->res = sockmap(param, conf.timeouts[CONNECTION_S]);
 | 
									param->res = sockmap(param, conf.timeouts[CONNECTION_S]);
 | 
				
			||||||
				break;
 | 
									break;
 | 
				
			||||||
			case 3:
 | 
								case 3:
 | 
				
			||||||
				memcpy(¶m->sinsr, ¶m->req, sizeof(param->sinsr));
 | 
									param->sinsr = param->req;
 | 
				
			||||||
				myfree(buf);
 | 
									myfree(buf);
 | 
				
			||||||
				if(!(buf = myalloc(LARGEBUFSIZE))) {RETURN(21);}
 | 
									if(!(buf = myalloc(LARGEBUFSIZE))) {RETURN(21);}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user