From e26f3f1e43d8a8f19eef82308184894afa406e10 Mon Sep 17 00:00:00 2001 From: oroborus Date: Tue, 5 Aug 2008 21:17:31 +0000 Subject: - dropne upravy, snad dom tam nic nepokail -- aj sa naplni buffer (4096 bajtov) server clienta odstreli. - medzi tym som pozeral/pozeram Svedsku trojku na JoJ-ke :) git-svn-id: http://opensvn.csie.org/tuxanci_ng@191 0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e --- src/base/serverSelect.c | 36 ++++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) (limited to 'src/base/serverSelect.c') diff --git a/src/base/serverSelect.c b/src/base/serverSelect.c index 99505d5..32be485 100644 --- a/src/base/serverSelect.c +++ b/src/base/serverSelect.c @@ -22,6 +22,7 @@ static struct timeval tv; static fd_set readfds; +static fd_set writefds; static int max_fd; void restartSelect() @@ -40,9 +41,9 @@ void restartSelect() max_fd = 0; } -void addSockToSelect(int sock) +void addSockToSelectRead(int sock) { - //printf("addSockToSelect %d\n", sock); + //printf("addSockToSelectRead %d\n", sock); FD_SET(sock, &readfds); @@ -52,6 +53,18 @@ void addSockToSelect(int sock) } } +void addSockToSelectWrite(int sock) +{ + //printf("addSockToSelectWrite %d\n", sock); + + FD_SET(sock, &writefds); + + if(sock > max_fd ) + { + max_fd = sock; + } +} + int actionSelect() { int ret; @@ -62,23 +75,23 @@ int actionSelect() if( listClient->count == 0 ) { - ret = select(max_fd+1, &readfds, (fd_set *)NULL, (fd_set *)NULL, NULL); + ret = select(max_fd+1, &readfds, &writefds, (fd_set *)NULL, NULL); setServerTimer(); } else { - ret = select(max_fd+1, &readfds, (fd_set *)NULL, (fd_set *)NULL, &tv); + ret = select(max_fd+1, &readfds, &writefds, (fd_set *)NULL, &tv); } #endif #ifndef PUBLIC_SERVER - ret = select(max_fd+1, &readfds, (fd_set *)NULL, (fd_set *)NULL, &tv); + ret = select(max_fd+1, &readfds, &writefds, (fd_set *)NULL, &tv); #endif return ret; } -int isChangeSockInSelect(int sock) +int isChangeSockInSelectRead(int sock) { int ret; @@ -88,3 +101,14 @@ int isChangeSockInSelect(int sock) return ret; } + +int isChangeSockInSelectWrite(int sock) +{ + int ret; + + ret = FD_ISSET(sock, &writefds); + + //printf("isChangeSockInSelect %d -> %d\n", sock, ret); + + return ret; +} -- cgit v1.2.3