- service_announce_services(iface, name, announce_ttl);
- service_reply(iface, name, announce_ttl);
+ if (!strcmp(name, C_DNS_SD)) {
+ dns_reply_a(iface, to, announce_ttl);
+ service_announce_services(iface, to, announce_ttl);
+ } else {
+ if (name[0] == '_') {
+ service_reply(iface, to, NULL, name, announce_ttl);
+ } else {
+ /* First dot separates instance name from the rest */
+ char *dot = strchr(name, '.');
+
+ if (dot) {
+ *dot = '\0';
+ service_reply(iface, to, name, dot + 1, announce_ttl);
+ *dot = '.';
+ }
+ }
+ }