diff --git a/src/proxy.h b/src/proxy.h index bda8c43..6827386 100644 --- a/src/proxy.h +++ b/src/proxy.h @@ -324,7 +324,7 @@ extern struct datatype datatypes[64]; extern struct commands commandhandlers[]; #ifdef WITHSPLICE -#define mapsocket(a,b) (a->srv->usesplice?splicemap(a,b):sockmap(a,b)) +#define mapsocket(a,b) (a->srv->usesplice && !a->ndatfilterssrv && !a->ndatfilterscli && !a->npredatfilters?splicemap(a,b):sockmap(a,b)) #else #define mapsocket(a,b) sockmap(a,b) #endif diff --git a/src/proxymain.c b/src/proxymain.c index 34a7d64..8dea2dc 100644 --- a/src/proxymain.c +++ b/src/proxymain.c @@ -395,7 +395,7 @@ int MODULEMAINFUNC (int argc, char** argv){ srv.singlepacket = 1 + atoi(argv[i]+2); #ifdef WITHSPLICE else - srv.usesplice = 1 + atoi(argv[i]+2); + if(*(argv[i]+2)) srv.usesplice = atoi(argv[i]+2); #endif break; case 'o': @@ -850,6 +850,9 @@ void srvinit(struct srvparam * srv, struct clientparam *param){ param->srv = srv; param->version = srv->version; param->paused = srv->paused; +#ifdef WITHSPLICE + param->usesplice = 1; +#endif 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; pthread_mutex_init(&srv->counter_mutex, NULL);