mumble/0001-fix-bonjour-support-using-avahi-compat-lib.diff

48 lines
1.8 KiB
Diff

From bb366a77262db2f14159a25c624183bffcf2efb8 Mon Sep 17 00:00:00 2001
From: Ludwig Nussel <ludwig.nussel@suse.de>
Date: Mon, 11 Apr 2011 14:56:25 +0200
Subject: [PATCH mumble] fix bonjour support using avahi compat lib
several reads may be required until the resolved callback fires so don't delete record in the read callback.
---
src/bonjour/bonjourserviceresolver.cpp | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/bonjour/bonjourserviceresolver.cpp b/src/bonjour/bonjourserviceresolver.cpp
index 534095c..3bbdc66 100644
--- a/src/bonjour/bonjourserviceresolver.cpp
+++ b/src/bonjour/bonjourserviceresolver.cpp
@@ -77,7 +77,6 @@ void BonjourServiceResolver::resolveBonjourRecord(const BonjourRecord &record) {
void BonjourServiceResolver::bonjourSocketReadyRead(int sockfd) {
ResolveRecord *rr = qmResolvers.value(sockfd);
- qmResolvers.remove(sockfd);
if (! rr)
return;
@@ -86,7 +85,6 @@ void BonjourServiceResolver::bonjourSocketReadyRead(int sockfd) {
if (err != kDNSServiceErr_NoError)
emit error(rr->record, err);
- delete rr;
}
@@ -95,6 +93,7 @@ void BonjourServiceResolver::bonjourResolveReply(DNSServiceRef, DNSServiceFlags
const char *, const char *hosttarget, quint16 port,
quint16 , const char *, void *context) {
ResolveRecord *rr = static_cast<ResolveRecord *>(context);
+ rr->bsr->qmResolvers.remove(DNSServiceRefSockFD(rr->dnssref));
if (errorCode != kDNSServiceErr_NoError) {
emit rr->bsr->error(rr->record, errorCode);
@@ -102,4 +101,5 @@ void BonjourServiceResolver::bonjourResolveReply(DNSServiceRef, DNSServiceFlags
}
rr->bonjourPort = qFromBigEndian<quint16>(port);
emit rr->bsr->bonjourRecordResolved(rr->record, QString::fromUtf8(hosttarget), rr->bonjourPort);
+ delete rr;
}
--
1.7.3.4