mirror of
https://github.com/3proxy/3proxy.git
synced 2026-06-10 09:50:12 +08:00
Check bandlims for UDP traffic
This commit is contained in:
parent
fd7b25bf06
commit
69862b67cb
@ -1020,6 +1020,7 @@ int MODULEMAINFUNC (int argc, char** argv){
|
|||||||
if(hashresolv(&udp_table, &defparam, &toparam, NULL)) {
|
if(hashresolv(&udp_table, &defparam, &toparam, NULL)) {
|
||||||
int i, len=0;
|
int i, len=0;
|
||||||
|
|
||||||
|
if(!toparam->bandlimfunc || !(*toparam->bandlimfunc)(toparam, 0, srv.udplen)){
|
||||||
if(toparam->udp_nhops){
|
if(toparam->udp_nhops){
|
||||||
for(i=1; i < toparam->udp_nhops; i++){
|
for(i=1; i < toparam->udp_nhops; i++){
|
||||||
len+=socks5_udp_build_hdr(srv.udpbuf2+len, &toparam->udp_relay[i-1]);
|
len+=socks5_udp_build_hdr(srv.udpbuf2+len, &toparam->udp_relay[i-1]);
|
||||||
@ -1031,6 +1032,7 @@ int MODULEMAINFUNC (int argc, char** argv){
|
|||||||
srv.so._sendto(toparam->sostate, toparam->remsock, (char *)srv.udpbuf2, len, 0, (struct sockaddr *)&toparam->sinsr, SASIZE(&toparam->sinsr));
|
srv.so._sendto(toparam->sostate, toparam->remsock, (char *)srv.udpbuf2, len, 0, (struct sockaddr *)&toparam->sinsr, SASIZE(&toparam->sinsr));
|
||||||
toparam->statscli64 += srv.udplen;
|
toparam->statscli64 += srv.udplen;
|
||||||
toparam->nwrites++;
|
toparam->nwrites++;
|
||||||
|
}
|
||||||
_3proxy_sem_unlock(udpinit);
|
_3proxy_sem_unlock(udpinit);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -61,6 +61,7 @@ void * udppmchild(struct clientparam* param) {
|
|||||||
if(!(param->srvbuf = malloc(UDPBUFSIZE)))RETURN(11);
|
if(!(param->srvbuf = malloc(UDPBUFSIZE)))RETURN(11);
|
||||||
param->srvbufsize = UDPBUFSIZE;
|
param->srvbufsize = UDPBUFSIZE;
|
||||||
}
|
}
|
||||||
|
if(!param->bandlimfunc || !(*param->bandlimfunc)(param, 0, param->srv->udplen)){
|
||||||
if(param->udp_nhops){
|
if(param->udp_nhops){
|
||||||
for(i=1; i < param->udp_nhops; i++){
|
for(i=1; i < param->udp_nhops; i++){
|
||||||
len+=socks5_udp_build_hdr(param->srvbuf+len, ¶m->udp_relay[i-1]);
|
len+=socks5_udp_build_hdr(param->srvbuf+len, ¶m->udp_relay[i-1]);
|
||||||
@ -70,10 +71,11 @@ void * udppmchild(struct clientparam* param) {
|
|||||||
memcpy(param->srvbuf+len, param->srv->udpbuf, param->srv->udplen > UDPBUFSIZE - len?UDPBUFSIZE - len : param->srv->udplen);
|
memcpy(param->srvbuf+len, param->srv->udpbuf, param->srv->udplen > UDPBUFSIZE - len?UDPBUFSIZE - len : param->srv->udplen);
|
||||||
len += param->srv->udplen > UDPBUFSIZE - len?UDPBUFSIZE - len : param->srv->udplen;
|
len += param->srv->udplen > UDPBUFSIZE - len?UDPBUFSIZE - len : param->srv->udplen;
|
||||||
param->srv->so._sendto(param->sostate, param->remsock, (char *)param->srvbuf, len, 0, (struct sockaddr *)¶m->sinsr, SASIZE(¶m->sinsr));
|
param->srv->so._sendto(param->sostate, param->remsock, (char *)param->srvbuf, len, 0, (struct sockaddr *)¶m->sinsr, SASIZE(¶m->sinsr));
|
||||||
_3proxy_sem_unlock(udpinit);
|
|
||||||
param->statscli64 += param->srvinbuf;
|
param->statscli64 += param->srvinbuf;
|
||||||
param->srvinbuf = 0;
|
|
||||||
param->nwrites++;
|
param->nwrites++;
|
||||||
|
}
|
||||||
|
_3proxy_sem_unlock(udpinit);
|
||||||
|
param->srvinbuf = 0;
|
||||||
param->clisock = param->srv->srvsock;
|
param->clisock = param->srv->srvsock;
|
||||||
param->waitserver64 = 0x7fffffffffffffff;
|
param->waitserver64 = 0x7fffffffffffffff;
|
||||||
param->res = udpsockmap(param, conf.timeouts[STRING_L]);
|
param->res = udpsockmap(param, conf.timeouts[STRING_L]);
|
||||||
|
|||||||
@ -124,6 +124,8 @@ int udpsockmap(struct clientparam *param, int timeo)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(param->bandlimfunc && (*param->bandlimfunc)(param, 0, len)) continue;
|
||||||
|
|
||||||
if (nhops == 0) {
|
if (nhops == 0) {
|
||||||
int i;
|
int i;
|
||||||
if (len < 10 || param->srvbuf[0] || param->srvbuf[1] || param->srvbuf[2])
|
if (len < 10 || param->srvbuf[0] || param->srvbuf[1] || param->srvbuf[2])
|
||||||
@ -195,6 +197,7 @@ int udpsockmap(struct clientparam *param, int timeo)
|
|||||||
}
|
}
|
||||||
param->statssrv64 += len;
|
param->statssrv64 += len;
|
||||||
param->nreads++;
|
param->nreads++;
|
||||||
|
if(param->bandlimfunc && (*param->bandlimfunc)(param, len, 0)) continue;
|
||||||
sendlen = len;
|
sendlen = len;
|
||||||
if (nhops == 0) {
|
if (nhops == 0) {
|
||||||
param->srvbuf[0] = param->srvbuf[1] = param->srvbuf[2] = 0;
|
param->srvbuf[0] = param->srvbuf[1] = param->srvbuf[2] = 0;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user