X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=dns.c;h=aadfdd8f6927806cbdb7108d81c1031559100308;hb=8f7e3bc8505d7a00d30b6bbd0f07b588b003e6b0;hp=68a088f7fba6ba62fa6e8a981dedb714821c21b7;hpb=64f78f19c005f62395c3328764403e7f2637d434;p=project%2Fmdnsd.git diff --git a/dns.c b/dns.c index 68a088f..aadfdd8 100644 --- a/dns.c +++ b/dns.c @@ -369,7 +369,7 @@ parse_question(struct interface *iface, struct sockaddr *from, char *name, struc 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; @@ -378,15 +378,18 @@ parse_question(struct interface *iface, struct sockaddr *from, char *name, struc 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(umdns_host_label) && - !strncmp(name, umdns_host_label, 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;