forked from jbagg/QtZeroConf
Add txt records to discovered services
This commit is contained in:
1 parent
9a6235509c
commit
195e740ceb
6 files changed
+46
-7
No files matched your search
+16
-3
@@ -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) {
|
||||
|
||||
Reference in new issue
Block a user