X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fmdnsd.git;a=blobdiff_plain;f=service.c;h=8d514c244b9b759008d3fe280657a45b4463e8a0;hp=fe6e5a91d31bd3475e47b3775db3e3474b848de6;hb=258039240037c81a77cf92517f5ba22fd0a2601d;hpb=be8ae8d0b5f2e8651edf0cc8f35916fc4b71d1ac;ds=sidebyside diff --git a/service.c b/service.c index fe6e5a9..8d514c2 100644 --- a/service.c +++ b/service.c @@ -107,7 +107,7 @@ service_add_srv(struct service *s, int ttl) #define TOUT_LOOKUP 60 -static int +static time_t service_timeout(struct service *s) { time_t t = monotonic_time(); @@ -115,9 +115,7 @@ service_timeout(struct service *s) if (t - s->t <= TOUT_LOOKUP) return 0; - s->t = t; - - return 1; + return t; } void @@ -154,8 +152,10 @@ service_reply_single(struct interface *iface, struct service *s, const char *mat { const char *host = service_name(s->service); char *service = strstr(host, "._"); + time_t t = service_timeout(s); + - if (!force && (!s->active || !service || !service_timeout(s))) + if (!force && (!s->active || !service || !t)) return; service++; @@ -163,6 +163,8 @@ service_reply_single(struct interface *iface, struct service *s, const char *mat if (match && strcmp(match, s->service)) return; + s->t = t; + dns_init_answer(); service_add_ptr(service_name(s->service), ttl); dns_send_answer(iface, service);