--- src/radiusd.c.orig Mon Jul 27 15:52:37 1998 +++ src/radiusd.c Sun Dec 10 17:04:17 2000 @@ -793,6 +793,19 @@ sigaction (SIGIOT, &action, NULL); /* Perhaps also known as SIGABRT ! */ sigaction (SIGFPE, &action, NULL); + /* the max number of open files should never be used as an argument + * for select(). On systems that support more than 256 open files + * select() is not able to handle that many fd's. + * In this case the max. number of fd's for select should not be + * set to the maximum number of descriptors. + * Since I'm too lazy to correct the code I set dtablesize to + * FD_SETSIZE. This is the only portable way to use select() on + * all descriptors. See also "Advanced Programming in the Unix + * Environment" (from W. Richard Stevens) and the BSD 4.4 manpage for + * select(2). + */ + dtablesize = FD_SETSIZE; +#ifdef BOGUS_CODE #ifdef _SC_OPEN_MAX if ((dtablesize = sysconf (_SC_OPEN_MAX)) == -1) { @@ -802,6 +815,7 @@ #else /* Assume BSD */ dtablesize = getdtablesize (); #endif /* _SC_OPEN_MAX */ +#endif /* BOGUS_CODE */ for (j = dtablesize; j >= 3; j--) { @@ -4467,7 +4481,7 @@ while ((event = authreq->event_q) != (EVENT_ENT *) NULL) { authreq->event_q = event->next; - free_event_final (event); + free_event (event); } while ((event = authreq->freed_events) != (EVENT_ENT *) NULL)