From b28a2e519a0f36da800b0fdab295c1875401ac84 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Mon, 7 Feb 2011 17:17:26 +0100 Subject: s3: Eliminate sys_select from do_smb_browse() -- untested --- source3/client/dnsbrowse.c | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) (limited to 'source3') diff --git a/source3/client/dnsbrowse.c b/source3/client/dnsbrowse.c index 5e3a4de9cf..c62f27beea 100644 --- a/source3/client/dnsbrowse.c +++ b/source3/client/dnsbrowse.c @@ -23,6 +23,7 @@ #ifdef WITH_DNSSD_SUPPORT #include +#include "system/select.h" /* Holds service instances found during DNS browse */ struct mdns_smbsrv_result @@ -155,7 +156,6 @@ int do_smb_browse(void) int mdnsfd; int fdsetsz; int ret; - fd_set *fdset = NULL; struct mdns_browse_state bstate; struct mdns_smbsrv_result *resptr; struct timeval tv; @@ -177,24 +177,14 @@ int do_smb_browse(void) mdnsfd = DNSServiceRefSockFD(mdns_conn_sdref); for (;;) { - if (fdset != NULL) { - TALLOC_FREE(fdset); - } - - fdsetsz = howmany(mdnsfd + 1, NFDBITS) * sizeof(fd_mask); - fdset = TALLOC_ZERO(ctx, fdsetsz); - FD_SET(mdnsfd, fdset); - - tv.tv_sec = 1; - tv.tv_usec = 0; + int revents; - /* Wait until response received from mDNS daemon */ - ret = sys_select(mdnsfd + 1, fdset, NULL, NULL, &tv); + ret = poll_one_fd(mdnsfd, POLLIN|POLLHUP, &revents, 1000); if (ret <= 0 && errno != EINTR) { break; } - if (FD_ISSET(mdnsfd, fdset)) { + if (revents & (POLLIN|POLLHUP|POLLERR)) { /* Invoke callback function */ if (DNSServiceProcessResult(mdns_conn_sdref)) { break; -- cgit