Просмотр исходного кода

Use splice by default if no filteers set

-s0 to disable splice
z3APA3A 7 лет назад
Родитель
Сommit
d2705df891
2 измененных файлов с 5 добавлено и 2 удалено
  1. 1 1
      src/proxy.h
  2. 4 1
      src/proxymain.c

+ 1 - 1
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

+ 4 - 1
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(&param->req) = *SAFAMILY(&param->sinsl) = *SAFAMILY(&param->sinsr) = *SAFAMILY(&param->sincr) = *SAFAMILY(&param->sincl) = AF_INET;
  pthread_mutex_init(&srv->counter_mutex, NULL);