err = errno;
} while (ret < 0 && err == EINTR);
if (ret < 0)
- PARA_CRIT_LOG("select error (%s)\n", strerror(err));
+ PARA_CRIT_LOG("select error: %s, max_fileno: %d\n",
+ strerror(err), n);
return ret;
}
*/
void para_fd_set(int fd, fd_set *fds, int *max_fileno)
{
+
+ if (fd < 0 || fd >= FD_SETSIZE) {
+ PARA_EMERG_LOG("fatal: tried to add invalid fd %d\n", fd);
+ exit(EXIT_FAILURE);
+ }
+#if 0
+ {
+ int flags = fcntl(fd, F_GETFL);
+ if (!(flags & O_NONBLOCK)) {
+ PARA_EMERG_LOG("fd %d is a blocking file descriptor\n", fd);
+ exit(EXIT_FAILURE);
+ }
+ }
+#endif
FD_SET(fd, fds);
*max_fileno = PARA_MAX(*max_fileno, fd);
}