From 95050a8d8be2e92cf1905c2e23b5abd0390ad7fa Mon Sep 17 00:00:00 2001 From: Simon Kelley Date: Fri, 14 Dec 2012 11:33:02 +0000 Subject: [PATCH] Backport fixes for 2.65 release. --- CHANGELOG | 11 +++++++++++ src/cache.c | 2 +- src/forward.c | 3 ++- src/option.c | 3 +++ 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index b98bc3b..711a1bf 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,14 @@ +version 2.65 + Fix regression which broke forwarding of queries sent via + TCP which are not for A and AAAA and which were directed to + non-default servers. Thanks to Niax for the bug report. + + Fix failure to build with DHCP support excluded. Thanks to + Gustavo Zacarias for the patch. + + Fix nasty regression in 2.64 which completely broke cacheing. + + version 2.64 Handle DHCP FQDN options with all flag bits zero and --dhcp-client-update set. Thanks to Bernd Krumbroeck for diff --git a/src/cache.c b/src/cache.c index ddbc5c0..03b3e78 100644 --- a/src/cache.c +++ b/src/cache.c @@ -371,7 +371,7 @@ struct crec *cache_insert(char *name, struct all_addr *addr, int freed_all = flags & F_REVERSE; int free_avail = 0; - if(daemon->max_cache_ttl < ttl) + if (daemon->max_cache_ttl != 0 && daemon->max_cache_ttl < ttl) ttl = daemon->max_cache_ttl; /* Don't log keys */ diff --git a/src/forward.c b/src/forward.c index 4afc25a..91bc6ea 100644 --- a/src/forward.c +++ b/src/forward.c @@ -834,7 +834,8 @@ unsigned char *tcp_request(int confd, time_t now, int norebind = 0; int checking_disabled; size_t m; - unsigned short qtype, gotname; + unsigned short qtype; + unsigned int gotname; unsigned char c1, c2; /* Max TCP packet + slop */ unsigned char *packet = whine_malloc(65536 + MAXDNAME + RRFIXEDSZ); diff --git a/src/option.c b/src/option.c index 714f2c2..c935b4b 100644 --- a/src/option.c +++ b/src/option.c @@ -623,6 +623,8 @@ static char *set_prefix(char *arg) return arg; } +#endif + char *parse_server(char *arg, union mysockaddr *addr, union mysockaddr *source_addr, char *interface, int *flags) { int source_port = 0, serv_port = NAMESERVER_PORT; @@ -710,6 +712,7 @@ char *parse_server(char *arg, union mysockaddr *addr, union mysockaddr *source_a return NULL; } +#ifdef HAVE_DHCP /* This is too insanely large to keep in-line in the switch */ static int parse_dhcp_opt(char *errstr, char *arg, int flags) {