--- libaitrpc/src/srv.c 2012/07/22 20:44:13 1.11 +++ libaitrpc/src/srv.c 2012/09/17 14:16:42 1.11.2.3 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: srv.c,v 1.11 2012/07/22 20:44:13 misho Exp $ +* $Id: srv.c,v 1.11.2.3 2012/09/17 14:16:42 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -446,6 +446,9 @@ acceptBLOBClients(sched_task_t *task) rpc_cli_t *c = NULL; register int i; socklen_t salen = sizeof(io_sockaddr_t); +#ifdef TCP_NOPUSH + int n = 1; +#endif /* check free slots for connect */ for (i = 0; i < io_arraySize(srv->srv_blob.clients) && @@ -474,8 +477,12 @@ acceptBLOBClients(sched_task_t *task) AIT_FREE_VAL(&c->cli_buf); io_arrayDel(srv->srv_blob.clients, i, 42); goto end; - } else + } else { +#ifdef TCP_NOPUSH + setsockopt(c->cli_sock, IPPROTO_TCP, TCP_NOPUSH, &n, sizeof n); +#endif fcntl(c->cli_sock, F_SETFL, fcntl(c->cli_sock, F_GETFL) | O_NONBLOCK); + } schedRead(TASK_ROOT(task), rxBLOB, c, c->cli_sock, NULL, 0); end: @@ -702,7 +709,7 @@ rpc_srv_initServer(u_int regProgID, u_char regProcID, if (netBuf < RPC_MIN_BUFSIZ) netBuf = BUFSIZ; else - netBuf = io_align(netBuf, 1); /* align netBuf length */ + netBuf = io_align(netBuf, 2); /* align netBuf length */ #ifdef HAVE_SRANDOMDEV srandomdev();