Add txt records to discovered services

This commit is contained in:
Jonathan Bagg committed 2017-03-15 20:32:28 -04:00
1 parent 9a6235509c
commit 195e740ceb
6 files changed
+46 -7

No files matched your search

+16 -3
View File
@@ -142,9 +142,6 @@ void DNSSD_API QZeroConfPrivate::resolverCallback(DNSServiceRef, DNSServiceFlags
const char *hostName, quint16 port, quint16 txtLen,
const char * txtRecord, void *userdata)
{
Q_UNUSED(txtLen);
Q_UNUSED(txtRecord);
QZeroConfPrivate *ref = static_cast<QZeroConfPrivate *>(userdata);
if (err != kDNSServiceErr_NoError) {
@@ -152,6 +149,22 @@ void DNSSD_API QZeroConfPrivate::resolverCallback(DNSServiceRef, DNSServiceFlags
return;
}
qint16 recLen;
while (txtLen > 0) // add txt records
{
recLen = txtRecord[0];
txtRecord++;
QByteArray avahiText((const char *)txtRecord, recLen);
QList<QByteArray> pair = avahiText.split('=');
if (pair.size() == 2)
ref->newService->txt[pair.at(0)] = pair.at(1);
else
ref->newService->txt[pair.at(0)] = "";
txtLen-= recLen + 1;
txtRecord+= recLen;
}
ref->newService->port = qFromBigEndian<quint16>(port);
err = DNSServiceGetAddrInfo(&ref->resolver, kDNSServiceFlagsForceMulticast, interfaceIndex, ref->protocol, hostName, (DNSServiceGetAddrInfoReply) addressReply, ref);
if (err == kDNSServiceErr_NoError) {