--- libaitio/src/sock.c 2013/11/22 10:19:50 1.4.4.12 +++ libaitio/src/sock.c 2013/11/22 10:37:44 1.4.4.16 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: sock.c,v 1.4.4.12 2013/11/22 10:19:50 misho Exp $ +* $Id: sock.c,v 1.4.4.16 2013/11/22 10:37:44 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,9 @@ 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]), AIT_LEN(&cli->cli_buf[0]), 0); @@ -187,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); @@ -200,12 +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); @@ -269,6 +279,7 @@ io_bridgeClient(sched_task_t *task) argv = array_To(args); array_Destroy(&args); + printf("Console %s\n", cli->cli_name); execv(*argv, argv); break; default: