|
From: Peep P. <so...@us...> - 2004-07-28 11:57:11
|
Update of /cvsroot/agd/server/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29149 Modified Files: net.c Log Message: Checking return value of select. Index: net.c =================================================================== RCS file: /cvsroot/agd/server/src/net.c,v retrieving revision 1.21 retrieving revision 1.22 diff -u -d -r1.21 -r1.22 --- net.c 24 Jul 2004 17:51:25 -0000 1.21 +++ net.c 28 Jul 2004 11:57:02 -0000 1.22 @@ -290,6 +290,7 @@ { struct timeval timeout; int i; + int ret; list_t *l; while(1) { @@ -306,16 +307,21 @@ } } - if(select(greatest_sockfd + 1, &readfds, 0, 0, &timeout)) { - if(FD_ISSET(listenfd, &readfds)) { - net_accept(); - } + ret = select(greatest_sockfd + 1, &readfds, 0, 0, &timeout); + if(ret < 0) { + printf("select(): %s\n", strerror(errno)); + return; + } + if(ret == 0) + return; + + if(FD_ISSET(listenfd, &readfds)) + net_accept(); - LOOP_PLAYERS() - if(FD_ISSET(pl->conn.socket, &readfds)) { - pl->conn.last_active = time(NULL); - net_doread(pl); - } + LOOP_PLAYERS() + if(FD_ISSET(pl->conn.socket, &readfds)) { + pl->conn.last_active = time(NULL); + net_doread(pl); } } |