ソースを参照

back to non-blockin splice on sending

z3APA3A 7 年 前
コミット
8af9ea8de8
1 ファイル変更2 行追加2 行削除
  1. 2 2
      src/sockmap.c

+ 2 - 2
src/sockmap.c

@@ -236,7 +236,7 @@ int splicemap(struct clientparam * param, int timeo){
 #if DEBUGLEVEL > 2
 #if DEBUGLEVEL > 2
 (*param->srv->logfunc)(param, "splice: recv from client");
 (*param->srv->logfunc)(param, "splice: recv from client");
 #endif
 #endif
-	res = splice(param->clisock, NULL, pipecli[1], NULL, rfromclient, SPLICE_F_MOVE);
+	res = splice(param->clisock, NULL, pipecli[1], NULL, rfromclient, SPLICE_F_NONBLOCK | SPLICE_F_MOVE);
 	if (res < 0){
 	if (res < 0){
 	    if(errno == EINTR) so._poll(NULL, 0, 1);
 	    if(errno == EINTR) so._poll(NULL, 0, 1);
 	    else if(errno != EAGAIN) RETURN(94);
 	    else if(errno != EAGAIN) RETURN(94);
@@ -256,7 +256,7 @@ int splicemap(struct clientparam * param, int timeo){
 #if DEBUGLEVEL > 2
 #if DEBUGLEVEL > 2
 (*param->srv->logfunc)(param, "splice: recv from server");
 (*param->srv->logfunc)(param, "splice: recv from server");
 #endif
 #endif
-	res = splice(param->remsock, NULL, pipesrv[1], NULL, rfromserver, SPLICE_F_MOVE);
+	res = splice(param->remsock, NULL, pipesrv[1], NULL, rfromserver, SPLICE_F_NONBLOCK | SPLICE_F_MOVE);
 	if (res < 0){
 	if (res < 0){
 	    if(errno == EINTR) so._poll(NULL, 0, 1);
 	    if(errno == EINTR) so._poll(NULL, 0, 1);
 	    else if(errno != EAGAIN) RETURN(93);
 	    else if(errno != EAGAIN) RETURN(93);