From 2622544691d10c8a2f35b21647823bf7470b51c3 Mon Sep 17 00:00:00 2001 From: Jonathan Bagg Date: Mon, 9 Oct 2017 21:23:00 -0400 Subject: [PATCH] Emit removeService() for all discovered services when browser is stopped. --- avahiclient.cpp | 4 +++- avahicore.cpp | 4 +++- bonjour.cpp | 4 +++- qzeroconf.h | 2 ++ 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/avahiclient.cpp b/avahiclient.cpp index 8f3036c..99b38a7 100644 --- a/avahiclient.cpp +++ b/avahiclient.cpp @@ -208,8 +208,10 @@ public: browser = NULL; QMap::iterator i; - for (i = pub->services.begin(); i != pub->services.end(); i++) + for (i = pub->services.begin(); i != pub->services.end(); i++) { + emit pub->serviceRemoved(*i); delete *i; + } pub->services.clear(); QMap::iterator r; diff --git a/avahicore.cpp b/avahicore.cpp index c9536cf..f98195a 100644 --- a/avahicore.cpp +++ b/avahicore.cpp @@ -220,8 +220,10 @@ public: browser = NULL; QMap::iterator i; - for (i = pub->services.begin(); i != pub->services.end(); i++) + for (i = pub->services.begin(); i != pub->services.end(); i++) { + emit pub->serviceRemoved(*i); delete *i; + } pub->services.clear(); QMap::iterator r; diff --git a/bonjour.cpp b/bonjour.cpp index 8ded869..4bb2355 100644 --- a/bonjour.cpp +++ b/bonjour.cpp @@ -250,8 +250,10 @@ void QZeroConfPrivate::cleanUp(DNSServiceRef toClean) browserSocket = NULL; } QMap::iterator i; - for (i = pub->services.begin(); i != pub->services.end(); i++) + for (i = pub->services.begin(); i != pub->services.end(); i++) { + emit pub->serviceRemoved(*i); delete *i; + } pub->services.clear(); } else if (toClean == dnssRef) { diff --git a/qzeroconf.h b/qzeroconf.h index ff28105..9053d5e 100644 --- a/qzeroconf.h +++ b/qzeroconf.h @@ -74,12 +74,14 @@ public: ~QZeroConf(); void startServicePublish(const char *name, const char *type, const char *domain, quint16 port); void stopServicePublish(void); + bool publishExists(void); inline void startBrowser(QString type) { startBrowser(type, QAbstractSocket::IPv4Protocol); } void startBrowser(QString type, QAbstractSocket::NetworkLayerProtocol protocol); void stopBrowser(void); + bool browserExists(void); void addServiceTxtRecord(QString nameOnly); void addServiceTxtRecord(QString name, QString value); void clearServiceTxtRecords();