From 3ad3f3bbd4ee716a7d2fb1e115cf89bd1b1a5de9 Mon Sep 17 00:00:00 2001 From: Simon Kelley Date: Tue, 16 Dec 2014 18:25:17 +0000 Subject: Fix breakage of --domain=,,local --- CHANGELOG | 4 ++++ src/option.c | 18 ++++++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 9174b0b..9e6c7aa 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -10,6 +10,10 @@ version 2.73 Use inotify for checking on updates to /etc/resolv.conf and friends under Linux. This fixes race conditions when the files are updated rapidly and saves CPU by noy polling. + + Fix breakage of --domain=,,local - only reverse + queries were intercepted. THis appears to have been broken + since 2.69. Thanks to Josh Stone for finding the bug. version 2.72 diff --git a/src/option.c b/src/option.c index b08e98e..209fa69 100644 --- a/src/option.c +++ b/src/option.c @@ -1941,10 +1941,17 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma else { /* generate the equivalent of - local=// local=/xxx.yyy.zzz.in-addr.arpa/ */ struct server *serv = add_rev4(new->start, msize); serv->flags |= SERV_NO_ADDR; + + /* local=// */ + serv = opt_malloc(sizeof(struct server)); + memset(serv, 0, sizeof(struct server)); + serv->domain = d; + serv->flags = SERV_HAS_DOMAIN | SERV_NO_ADDR; + serv->next = daemon->servers; + daemon->servers = serv; } } } @@ -1978,10 +1985,17 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma else { /* generate the equivalent of - local=// local=/xxx.yyy.zzz.ip6.arpa/ */ struct server *serv = add_rev6(&new->start6, msize); serv->flags |= SERV_NO_ADDR; + + /* local=// */ + serv = opt_malloc(sizeof(struct server)); + memset(serv, 0, sizeof(struct server)); + serv->domain = d; + serv->flags = SERV_HAS_DOMAIN | SERV_NO_ADDR; + serv->next = daemon->servers; + daemon->servers = serv; } } } -- cgit v1.2.1