Skip to content

Commit

Permalink
Revert "Bonjour - change QSocketNotifier pointers to QSharedPointer"
Browse files Browse the repository at this point in the history
This reverts commit 9d7b114.

jbagg#44
  • Loading branch information
mzanetti committed Dec 20, 2020
1 parent bba96dc commit 98ffbc5
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 16 deletions.
32 changes: 20 additions & 12 deletions bonjour.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,8 @@ void Resolver::cleanUp()
{
DNSServiceRefDeallocate(DNSresolverRef);
DNSServiceRefDeallocate(DNSaddressRef);
// the QSocketNotifiers resolverNotifier and addressNotifier get deleted when the QSharedPointer gets deleted along with the Resolver. No need to clear them here.
delete resolverNotifier;
delete addressNotifier;
QString key = zcs->name() + QString::number(zcs->interfaceIndex());
ref->resolvers.remove(key);
delete this;
Expand Down Expand Up @@ -92,8 +93,8 @@ void QZeroConfPrivate::resolve(QZeroConfService zcs)
resolver->cleanUp();
}
else {
resolver->resolverNotifier = QSharedPointer<QSocketNotifier>::create(sockfd, QSocketNotifier::Read);
connect(resolver->resolverNotifier.data(), &QSocketNotifier::activated, resolver, &Resolver::resolverReady);
resolver->resolverNotifier = new QSocketNotifier(sockfd, QSocketNotifier::Read);
connect(resolver->resolverNotifier, &QSocketNotifier::activated, resolver, &Resolver::resolverReady);
}
}
else {
Expand Down Expand Up @@ -127,7 +128,7 @@ void DNSSD_API QZeroConfPrivate::browseCallback(DNSServiceRef, DNSServiceFlags f
key = name + QString::number(interfaceIndex);
if (flags & kDNSServiceFlagsAdd) {
if (!ref->pub->services.contains(key)) {
zcs = QZeroConfService::create();
zcs = QZeroConfService(new QZeroConfServiceData);
zcs->m_name = name;
zcs->m_type = type;
zcs->m_domain = domain;
Expand Down Expand Up @@ -180,6 +181,7 @@ void DNSSD_API QZeroConfPrivate::resolverCallback(DNSServiceRef, DNSServiceFlags
resolver->zcs->m_port = qFromBigEndian<quint16>(port);

if (resolver->DNSaddressRef) {
delete resolver->addressNotifier;
DNSServiceRefDeallocate(resolver->DNSaddressRef);
resolver->DNSaddressRef = nullptr;
}
Expand All @@ -190,8 +192,8 @@ void DNSSD_API QZeroConfPrivate::resolverCallback(DNSServiceRef, DNSServiceFlags
resolver->cleanUp();
}
else {
resolver->addressNotifier = QSharedPointer<QSocketNotifier>::create(sockfd, QSocketNotifier::Read);
connect(resolver->addressNotifier.data(), &QSocketNotifier::activated, resolver, &Resolver::addressReady);
resolver->addressNotifier = new QSocketNotifier(sockfd, QSocketNotifier::Read);
connect(resolver->addressNotifier, &QSocketNotifier::activated, resolver, &Resolver::addressReady);
}
}
else {
Expand Down Expand Up @@ -236,7 +238,10 @@ void QZeroConfPrivate::cleanUp(DNSServiceRef toClean)
return;
else if (toClean == browser) {
browser = nullptr;
browserNotifier.clear();
if (browserSocket) {
delete browserSocket;
browserSocket = nullptr;
}
QMap<QString, QZeroConfService >::iterator i;
for (i = pub->services.begin(); i != pub->services.end(); i++) {
QString key = (*i)->name() + QString::number((*i)->interfaceIndex());
Expand All @@ -247,7 +252,10 @@ void QZeroConfPrivate::cleanUp(DNSServiceRef toClean)
}
else if (toClean == dnssRef) {
dnssRef = nullptr;
serviceNotifier.clear();
if (bs) {
delete bs;
bs = nullptr;
}
}

DNSServiceRefDeallocate(toClean);
Expand Down Expand Up @@ -296,8 +304,8 @@ void QZeroConf::startServicePublish(const char *name, const char *type, const ch
emit error(QZeroConf::serviceRegistrationFailed);
}
else {
pri->serviceNotifier = QSharedPointer<QSocketNotifier>::create(sockfd, QSocketNotifier::Read, this);
connect(pri->serviceNotifier.data(), &QSocketNotifier::activated, pri, &QZeroConfPrivate::bsRead);
pri->bs = new QSocketNotifier(sockfd, QSocketNotifier::Read, this);
connect(pri->bs, SIGNAL(activated(int)), pri, SLOT(bsRead()));
}
}
else {
Expand Down Expand Up @@ -363,8 +371,8 @@ void QZeroConf::startBrowser(QString type, QAbstractSocket::NetworkLayerProtocol
emit error(QZeroConf::browserFailed);
}
else {
pri->browserNotifier = QSharedPointer<QSocketNotifier>::create(sockfd, QSocketNotifier::Read, this);
connect(pri->browserNotifier.data(), &QSocketNotifier::activated, pri, &QZeroConfPrivate::browserRead);
pri->browserSocket = new QSocketNotifier(sockfd, QSocketNotifier::Read, this);
connect(pri->browserSocket, SIGNAL(activated(int)), pri, SLOT(browserRead()));
}
}
else {
Expand Down
8 changes: 4 additions & 4 deletions bonjour_p.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ class Resolver : public QObject
QZeroConfPrivate *ref = nullptr;
DNSServiceRef DNSresolverRef = nullptr;
DNSServiceRef DNSaddressRef = nullptr;
QSharedPointer <QSocketNotifier> resolverNotifier;
QSharedPointer <QSocketNotifier> addressNotifier;
QSocketNotifier *resolverNotifier = nullptr;
QSocketNotifier *addressNotifier = nullptr;

public slots:
void resolverReady();
Expand Down Expand Up @@ -80,8 +80,8 @@ class QZeroConfPrivate : public QObject
DNSServiceRef dnssRef = nullptr;
DNSServiceRef browser = nullptr;
DNSServiceProtocol protocol;
QSharedPointer<QSocketNotifier> serviceNotifier;
QSharedPointer<QSocketNotifier> browserNotifier;
QSocketNotifier *bs = nullptr;
QSocketNotifier *browserSocket = nullptr;
QByteArray txt;
QHash<QString, Resolver*> resolvers;

Expand Down

0 comments on commit 98ffbc5

Please sign in to comment.