summaryrefslogtreecommitdiff
path: root/src/base/serverSelect.c
diff options
context:
space:
mode:
authororoborus <oroborus@0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e>2008-08-05 21:17:31 +0000
committeroroborus <oroborus@0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e>2008-08-05 21:17:31 +0000
commite26f3f1e43d8a8f19eef82308184894afa406e10 (patch)
tree341aeb155492ce2313c10ebc6d488b06adc250b5 /src/base/serverSelect.c
parentaecb6c466c1e7efa0f07809aa18096e7d5559850 (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.c36
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;
+}