--- libaitio/src/sock.c 2013/11/22 10:23:19 1.4.4.13 +++ libaitio/src/sock.c 2013/11/22 10:30:21 1.4.4.15 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: sock.c,v 1.4.4.13 2013/11/22 10:23:19 misho Exp $ +* $Id: sock.c,v 1.4.4.15 2013/11/22 10:30:21 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -90,6 +90,8 @@ io_acceptClient(sched_task_t *task) sock_cli_t *cli = NULL; sock_t *s = (sock_t*) TASK_ARG(task); + ioUpdTimerSocket(cli, (void*) cli->cli_func); + if (s->sock_type == SOCK_STREAM) { if ((c = accept(TASK_FD(task), &sa.sa, &salen)) == -1) { LOGERR; @@ -139,6 +141,8 @@ io_txNet(sched_task_t *task) sock_cli_t *cli = TASK_ARG(task); sock_t *s = (sock_t*) cli->cli_parent; + ioUpdTimerSocket(cli, (void*) cli->cli_func); + if (s->sock_type == SOCK_STREAM) wlen = send(TASK_FD(task), TASK_DATA(task), TASK_DATLEN(task), 0); else @@ -174,6 +178,8 @@ io_rxNet(sched_task_t *task) sockaddr_t sa; socklen_t salen = sizeof sa.ss; + ioUpdTimerSocket(cli, (void*) cli->cli_func); + memset(AIT_GET_BUF(&cli->cli_buf[0]), 0, AIT_LEN(&cli->cli_buf[0])); if (s->sock_type == SOCK_STREAM) rlen = recv(TASK_FD(task), AIT_GET_BUF(&cli->cli_buf[0]), @@ -188,7 +194,7 @@ io_rxNet(sched_task_t *task) schedEvent(TASK_ROOT(task), io_closeClient, cli, 0, (void*) cli->cli_func, cli->cli_fd); else - schedWrite(TASK_ROOT(task), io_txPty, cli, cli->cli_pty, + schedEvent(TASK_ROOT(task), io_txPty, cli, cli->cli_pty, AIT_GET_BUF(&cli->cli_buf[0]), rlen); end: schedReadSelf(task); @@ -201,13 +207,15 @@ io_rxPty(sched_task_t *task) int rlen; sock_cli_t *cli = TASK_ARG(task); + ioUpdTimerSocket(cli, (void*) cli->cli_func); + memset(AIT_GET_BUF(&cli->cli_buf[1]), 0, AIT_LEN(&cli->cli_buf[1])); rlen = read(TASK_FD(task), AIT_GET_BUF(&cli->cli_buf[1]), AIT_LEN(&cli->cli_buf[1])); if (rlen < 1) schedEvent(TASK_ROOT(task), io_closeClient, cli, 0, (void*) cli->cli_func, cli->cli_fd); else - schedWrite(TASK_ROOT(task), io_txNet, cli, cli->cli_fd, + schedEvent(TASK_ROOT(task), io_txNet, cli, cli->cli_fd, AIT_GET_BUF(&cli->cli_buf[1]), rlen); schedReadSelf(task);