On 19/12/2016 16:58, John Crispin wrote:
> When a question is incoming the service was incorrectly resettig the
> query timeout regardless of it being the right service. This causes
> the code to never answer the questions it is being asked.
> 
> Reported-by: Cristian Morales Vega <crist...@samknows.com>
> Signed-off-by: John Crispin <j...@phrozen.org>
> ---
>  service.c |   12 +++++++-----
>  1 file changed, 7 insertions(+), 5 deletions(-)
> 
> Hi Cristian
> 
> the patch is only runtime tested, could you give it a spin to see if it 
> solves your problem ?
> 
s/runtime/compile/g ...

>       John
> 
> 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);
> 

_______________________________________________
Lede-dev mailing list
Lede-dev@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/lede-dev

Reply via email to