From 154364bab7ced7653281c498a8d726a9f7c58f80 Mon Sep 17 00:00:00 2001 From: Fawzi Mohamed Date: Tue, 3 Apr 2012 16:30:53 +0200 Subject: [PATCH] zeroconf: improve startup of mdnssd give enough startup time, while still quickly bailing out when quitting Change-Id: I628621099e9ead4defc4613615ccb5e8303ff2df Reviewed-by: Christian Kandeler --- src/libs/zeroconf/embed/dnssd_clientstub.c | 6 ++++-- src/libs/zeroconf/servicebrowser.cpp | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/libs/zeroconf/embed/dnssd_clientstub.c b/src/libs/zeroconf/embed/dnssd_clientstub.c index 1f57a520efd..21292214680 100644 --- a/src/libs/zeroconf/embed/dnssd_clientstub.c +++ b/src/libs/zeroconf/embed/dnssd_clientstub.c @@ -35,7 +35,9 @@ #include "dnssd_ipc.h" -namespace ZeroConf { namespace embeddedLib { +namespace ZeroConf { +extern int gQuickStop; +namespace embeddedLib { #include "../dns_sd_funct.h" static int gDaemonErr = kDNSServiceErr_NoError; }} @@ -233,7 +235,7 @@ static int read_all(dnssd_sock_t sd, char *buf, int len) int nVal=select(sd+1, &readFds, &writeFds, &exceptFds, &timeout); if (nVal < 1 || !FD_ISSET(sd, &readFds)) { ++nErr; - if (nErr < 6) // wait max 6s without reading + if (nErr < 100 && ! ZeroConf::gQuickStop) // wait max 100s without reading continue; } else { num_read = recv(sd, buf, len, 0); diff --git a/src/libs/zeroconf/servicebrowser.cpp b/src/libs/zeroconf/servicebrowser.cpp index 89022301aae..6ba94bd0ac8 100644 --- a/src/libs/zeroconf/servicebrowser.cpp +++ b/src/libs/zeroconf/servicebrowser.cpp @@ -197,6 +197,8 @@ void ZeroConfLib::setDefaultLib(LibUsage usage, const QString &avahiLibName, namespace ZeroConf { +int gQuickStop = 0; + // ----------------- ErrorMessage impl ----------------- /*! \class ZeroConf::ErrorMessage @@ -1597,7 +1599,9 @@ MainConnection::MainConnection(): MainConnection::~MainConnection() { + gQuickStop = 1; stop(true); + gQuickStop = 0; delete m_thread; }