Use poll() instead of select() to remove limits on open file descriptors.
diff --git a/src/dbus.c b/src/dbus.c
index 1384ccf..3555f49 100644
--- a/src/dbus.c
+++ b/src/dbus.c
@@ -749,8 +749,7 @@
}
-void set_dbus_listeners(int *maxfdp,
- fd_set *rset, fd_set *wset, fd_set *eset)
+void set_dbus_listeners(void)
{
struct watch *w;
@@ -761,16 +760,16 @@
int fd = dbus_watch_get_unix_fd(w->watch);
if (flags & DBUS_WATCH_READABLE)
- bump_maxfd(rset, fd, maxfdp);
+ poll_listen(fd, POLLIN);
if (flags & DBUS_WATCH_WRITABLE)
- bump_maxfd(wset, fd, maxfdp);
+ poll_listen(fd, POLLOUT);
- bump_maxfd(eset, fd, maxfdp);
+ poll_listen(fd, POLLERR);
}
}
-void check_dbus_listeners(fd_set *rset, fd_set *wset, fd_set *eset)
+void check_dbus_listeners()
{
DBusConnection *connection = (DBusConnection *)daemon->dbus;
struct watch *w;
@@ -781,13 +780,13 @@
unsigned int flags = 0;
int fd = dbus_watch_get_unix_fd(w->watch);
- if (FD_ISSET(fd, rset))
+ if (poll_check(fd, POLLIN))
flags |= DBUS_WATCH_READABLE;
- if (FD_ISSET(fd, wset))
+ if (poll_check(fd, POLLOUT))
flags |= DBUS_WATCH_WRITABLE;
- if (FD_ISSET(fd, eset))
+ if (poll_check(fd, POLLERR))
flags |= DBUS_WATCH_ERROR;
if (flags != 0)