summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2009-07-26 15:23:28 (GMT)
committerRemko Tronçon <git@el-tramo.be>2009-07-26 16:43:18 (GMT)
commit81ea0a6b0ea85c55c2f166b69da652aaab2ef79a (patch)
tree23ddd1388c3589bfd7d25650f4da3a1a4ab59723 /Swiften/LinkLocal/LinkLocalServiceBrowser.cpp
parente7ab68e8daf120d932d9eefc9053e9e064ca29af (diff)
downloadswift-81ea0a6b0ea85c55c2f166b69da652aaab2ef79a.zip
swift-81ea0a6b0ea85c55c2f166b69da652aaab2ef79a.tar.bz2
Test LinkLocal service registration.
Diffstat (limited to 'Swiften/LinkLocal/LinkLocalServiceBrowser.cpp')
-rw-r--r--Swiften/LinkLocal/LinkLocalServiceBrowser.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/Swiften/LinkLocal/LinkLocalServiceBrowser.cpp b/Swiften/LinkLocal/LinkLocalServiceBrowser.cpp
index 265acc1..f7c5478 100644
--- a/Swiften/LinkLocal/LinkLocalServiceBrowser.cpp
+++ b/Swiften/LinkLocal/LinkLocalServiceBrowser.cpp
@@ -11,7 +11,9 @@ LinkLocalServiceBrowser::LinkLocalServiceBrowser(boost::shared_ptr<DNSSDQuerier>
}
LinkLocalServiceBrowser::~LinkLocalServiceBrowser() {
- assert(!isRunning());
+ if (isRunning()) {
+ std::cerr << "WARNING: LinkLocalServiceBrowser still running on destruction" << std::endl;
+ }
}
@@ -67,6 +69,7 @@ void LinkLocalServiceBrowser::unregisterService() {
assert(registerQuery);
registerQuery->unregisterService();
registerQuery.reset();
+ selfService.reset();
}
std::vector<LinkLocalService> LinkLocalServiceBrowser::getServices() const {
@@ -78,6 +81,9 @@ std::vector<LinkLocalService> LinkLocalServiceBrowser::getServices() const {
}
void LinkLocalServiceBrowser::handleServiceAdded(const DNSSDServiceID& service) {
+ if (selfService && service == *selfService) {
+ return;
+ }
boost::shared_ptr<DNSSDResolveServiceQuery> resolveQuery = querier->createResolveServiceQuery(service);
resolveQuery->onServiceResolved.connect(
boost::bind(&LinkLocalServiceBrowser::handleServiceResolved, this, service, _1));
@@ -89,6 +95,9 @@ void LinkLocalServiceBrowser::handleServiceAdded(const DNSSDServiceID& service)
}
void LinkLocalServiceBrowser::handleServiceRemoved(const DNSSDServiceID& service) {
+ if (selfService && service == *selfService) {
+ return;
+ }
ResolveQueryMap::iterator i = resolveQueries.find(service);
assert(i != resolveQueries.end());
i->second->stop();
@@ -111,7 +120,10 @@ void LinkLocalServiceBrowser::handleServiceResolved(const DNSSDServiceID& servic
}
void LinkLocalServiceBrowser::handleRegisterFinished(const boost::optional<DNSSDServiceID>& result) {
- if (!result) {
+ if (result) {
+ selfService = result;
+ }
+ else {
haveError = true;
stop();
}