case TYPE_ANY:
if (!strcmp(name, mdns_hostname_local)) {
dns_reply_a(iface, to, announce_ttl);
- service_reply(iface, to, NULL, announce_ttl);
+ service_reply(iface, to, NULL, NULL, announce_ttl);
}
break;
dns_reply_a(iface, to, announce_ttl);
service_announce_services(iface, to, announce_ttl);
} else {
- /* First dot separates instance name from the rest */
- char *dot = strchr(name, '.');
- /* Length of queried instance */
- size_t len = dot ? dot - name : 0;
-
- /* Make sure it's query for the instance name we use */
- if (len && len == strlen(mdns_hostname) &&
- !strncmp(name, mdns_hostname, len))
- service_reply(iface, to, dot + 1, announce_ttl);
+ 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 = '.';
+ }
+ }
}
break;
host = strstr(name, ".local");
if (host)
*host = '\0';
- if (!strcmp(mdns_hostname, name))
+ if (!strcmp(umdns_host_label, name))
dns_reply_a(iface, to, announce_ttl);
break;
};