diff options
| author | oroborus <oroborus@0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e> | 2008-08-05 21:17:31 +0000 |
|---|---|---|
| committer | oroborus <oroborus@0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e> | 2008-08-05 21:17:31 +0000 |
| commit | e26f3f1e43d8a8f19eef82308184894afa406e10 (patch) | |
| tree | 341aeb155492ce2313c10ebc6d488b06adc250b5 /src/base/serverSelect.c | |
| parent | aecb6c466c1e7efa0f07809aa18096e7d5559850 (diff) | |
- 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
Diffstat (limited to 'src/base/serverSelect.c')
| -rw-r--r-- | src/base/serverSelect.c | 36 |
1 files changed, 30 insertions, 6 deletions
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; +} |