X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fngircd%2Fio.c;h=cb2b55a9297d9c0285f1be1a5d4db370f0fedb95;hb=04e38f17ae671f84b93e06c6eefa9235dd71d6ce;hp=8b8132a11ec784d55e38f48f56ef6a0b96775a70;hpb=66e68de16a2c174811cf161654b734a9254456c5;p=ngircd-alex.git diff --git a/src/ngircd/io.c b/src/ngircd/io.c index 8b8132a1..cb2b55a9 100644 --- a/src/ngircd/io.c +++ b/src/ngircd/io.c @@ -12,7 +12,7 @@ #include "portab.h" -static char UNUSED id[] = "$Id: io.c,v 1.30 2008/04/03 14:17:42 fw Exp $"; +static char UNUSED id[] = "$Id: io.c,v 1.31 2008/04/03 20:56:44 fw Exp $"; #include #include @@ -104,13 +104,17 @@ static bool io_event_change_devpoll(int fd, short what); #ifdef IO_USE_SELECT #include "defines.h" /* for conn.h */ -#include "conn.h" /* for CONN_IDX (needed by resolve.h) */ -#include "resolve.h" /* for RES_STAT (needed by conf.h) */ +#include "proc.h" /* for PROC_STAT (needed by conf.h) */ +#include "conn.h" /* for CONN_ID (needed by conf.h) */ #include "conf.h" /* for Conf_MaxConnections */ static fd_set readers; static fd_set writers; -static int select_maxfd; /* the select() interface sucks badly */ +/* + * this is the first argument for select(), i.e. + * the largest fd registered, plus one. + */ +static int select_maxfd; static int io_dispatch_select(struct timeval *tv); #ifndef IO_USE_EPOLL @@ -384,6 +388,9 @@ io_library_init_select(unsigned int eventsize) Conf_MaxConnections = FD_SETSIZE - 1; } +#else + Log(LOG_WARNING, + "FD_SETSIZE undefined, don't know how many descriptors select() can handle on your platform ..."); #endif /* FD_SETSIZE */ library_initialized = true; } @@ -622,15 +629,7 @@ io_library_init(unsigned int eventsize) { if (library_initialized) return true; -#ifdef IO_USE_SELECT -#ifndef FD_SETSIZE - Log(LOG_WARNING, - "FD_SETSIZE undefined, don't know how many descriptors select() can handle on your platform ..."); -#else - if (eventsize >= FD_SETSIZE) - eventsize = FD_SETSIZE - 1; -#endif /* FD_SETSIZE */ -#endif /* IO_USE_SELECT */ + if ((eventsize > 0) && !array_alloc(&io_events, sizeof(io_event), (size_t)eventsize)) eventsize = 0;