pocoproject / poco-dnssd

POCO DNS-SD (Zeroconf) Wrapper Library for Bonjour and Avahi
Other
21 stars 13 forks source link

Handling of subtypes. Record names miss subtype information. Service name presented by ServiceEventArgs #2

Open petersmar opened 7 years ago

petersmar commented 7 years ago

As described in the documentation of the Service class, subtypes are defined in the domain string and are seperated by comma from the domain name: Example of such a string is "_bacnet._tcp,dev".

I added/defined a service using the following line of code: Poco::DNSSD::Service serviceDEV1(ni.index(), "1-4711", "", "_bacnet._tcp,dev", "", "", 8080, propsDEV);

Using wireshark it is recordable that there are records propagated that will inform about the defined/used subkey: "dev._sub._bacnet._tcp.local: type PTR, class IN, 1-4711._bacnet._tcp.local" but the records like SRV and TXT miss the subkey information in the recoreds name. There is only "1-4711._bacnet._tcp.local: type SRV, class IN, ..." and "1-4711._bacnet._tcp.local: type TXT, class IN, ..." instead of "1-4711.dev._sub._bacnet._tcp.local: type SRV, class IN, ..." and "1-4711.dev._sub._bacnet._tcp.local: type TXT, class IN, ..." as I would expect.

But to get such a record on the wire (visible to wireshark) using the name with the subkey information, I need to create the service element that way: Poco::DNSSD::Service serviceDEV1(ni.index(), "1-4711.dev._sub", "", "_bacnet._tcp,dev", "", "", 8080, propsDEV);

But when I request information from the DNSSD system I get it via the event OnServiceResolved the Service data of the ServiceEventArgs return as Name "1-4711.dev._sub" and as FullName "1-4711.dev._sub._bacnet._tcp.local." (There are backslashes for escaping?). The FullName with its escaping characters is not what I expected.

Is there any issue in handling the Service class (from my side) to get the library handling subtypes as expected or is there a bug inside the library?

TestDNSSD.cpp.txt It is the code of my testapplication TestDNSSD Output.txt It is the output of the application TestDNSSD Wireshark.pcapng.txt The wireshark trace. Was not able to load a ZIP file. Remove the txt extension of pcapng file and hope it is not damaged.