From: Rafał Miłecki <ra...@milecki.pl> When we receive PTR question it includes hostname (instance), e.g.: mdnsd: parse_question (391): Q -> PTR lede._http._tcp.local
First of all we should check if it matches hostname we use before trying to reply. Secondly service_reply expects service with domain appended (without hostname/instance) so we need to strip received string out of hostname before passing it. Signed-off-by: Rafał Miłecki <ra...@milecki.pl> --- dns.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/dns.c b/dns.c index 91434f2..dac6f2c 100644 --- a/dns.c +++ b/dns.c @@ -367,9 +367,19 @@ parse_question(struct interface *iface, char *name, struct dns_question *q) break; case TYPE_PTR: - if (!strcmp(name, sdudp)) + if (!strcmp(name, sdudp)) { service_announce_services(iface, announce_ttl); - service_reply(iface, name, 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, dot + 1, announce_ttl); + } break; case TYPE_AAAA: -- 2.11.0 _______________________________________________ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev