Commit 5821105b authored by Chen Wei's avatar Chen Wei

Limit number of upstream nameservers when logging configuration.

parent e994d62e
...@@ -24,7 +24,7 @@ MANDIR = $(PREFIX)/share/man ...@@ -24,7 +24,7 @@ MANDIR = $(PREFIX)/share/man
LOCALEDIR = $(PREFIX)/share/locale LOCALEDIR = $(PREFIX)/share/locale
BUILDDIR = $(SRC) BUILDDIR = $(SRC)
DESTDIR = DESTDIR =
CFLAGS = -Wall -W -O0 -g CFLAGS = -Wall -W -O2
LDFLAGS = LDFLAGS =
COPTS = COPTS =
RPM_OPT_FLAGS = RPM_OPT_FLAGS =
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#define TIMEOUT 10 /* drop UDP queries after TIMEOUT seconds */ #define TIMEOUT 10 /* drop UDP queries after TIMEOUT seconds */
#define FORWARD_TEST 50 /* try all servers every 50 queries */ #define FORWARD_TEST 50 /* try all servers every 50 queries */
#define FORWARD_TIME 20 /* or 20 seconds */ #define FORWARD_TIME 20 /* or 20 seconds */
#define SERVERS_LOGGED 30 /* Only log this many servers when logging state */
#define RANDOM_SOCKS 64 /* max simultaneous random ports */ #define RANDOM_SOCKS 64 /* max simultaneous random ports */
#define LEASE_RETRY 60 /* on error, retry writing leasefile after LEASE_RETRY seconds */ #define LEASE_RETRY 60 /* on error, retry writing leasefile after LEASE_RETRY seconds */
#define CACHESIZ 150 /* default cache size */ #define CACHESIZ 150 /* default cache size */
......
...@@ -1406,8 +1406,8 @@ struct htree_node *domain_match(struct htree_node *root, char *domain); ...@@ -1406,8 +1406,8 @@ struct htree_node *domain_match(struct htree_node *root, char *domain);
struct htree_node *domain_find_or_add(struct htree_node *root, char *domain); struct htree_node *domain_find_or_add(struct htree_node *root, char *domain);
struct server *lookup_or_install_new_server(struct server *serv); struct server *lookup_or_install_new_server(struct server *serv);
void htree_free (struct htree_node *node); void htree_free (struct htree_node *node);
void print_server_special_domains(struct htree_node *node, void print_server_special_domains(struct htree_node *node, char *parents[],
char *parents[], int current_level); int current_level, int *count);
/* helper.c */ /* helper.c */
#if defined(HAVE_SCRIPT) #if defined(HAVE_SCRIPT)
......
...@@ -443,12 +443,11 @@ struct server *lookup_or_install_new_server(struct server *serv) ...@@ -443,12 +443,11 @@ struct server *lookup_or_install_new_server(struct server *serv)
} }
/* print the daemon->htree_special_domains tree recursively */ /* print the daemon->htree_special_domains tree recursively */
void print_server_special_domains (struct htree_node *node, void print_server_special_domains (struct htree_node *node, char *parents[],
char *parents[], int current_level) int current_level, int *count)
{ {
struct htree_node *np; struct htree_node *np;
struct special_domain *obj; struct special_domain *obj;
char buf[MAXDNAME];
char ip_buf[ADDRSTRLEN]; char ip_buf[ADDRSTRLEN];
int j, level; int j, level;
int port = 0; int port = 0;
...@@ -463,16 +462,19 @@ void print_server_special_domains (struct htree_node *node, ...@@ -463,16 +462,19 @@ void print_server_special_domains (struct htree_node *node,
obj = (struct special_domain *) node->ptr; obj = (struct special_domain *) node->ptr;
if (obj->domain_flags & SERV_HAS_DOMAIN) if (obj->domain_flags & SERV_HAS_DOMAIN)
{ {
memset (buf, 0, MAXDNAME); if ((*count)++ < SERVERS_LOGGED)
for (j = level; j > 1; j--)
{ {
strcat (buf, parents[j]); memset (buf, 0, MAXDNAME);
strcat (buf, "."); for (j = level; j > 1; j--)
{
strcat (buf, parents[j]);
strcat (buf, ".");
}
buf[strlen (buf) - 1] = '\0';
port = prettyprint_addr (&obj->server->addr, ip_buf);
my_syslog(LOG_INFO, _("using nameserver %s#%d for domain %s"),
ip_buf, port, buf);
} }
buf[strlen (buf) - 1] = '\0';
port = prettyprint_addr (&obj->server->addr, ip_buf);
my_syslog(LOG_INFO, _("using nameserver %s#%d for domain %s"),
ip_buf, port, buf);
} }
} }
} }
...@@ -481,6 +483,6 @@ void print_server_special_domains (struct htree_node *node, ...@@ -481,6 +483,6 @@ void print_server_special_domains (struct htree_node *node,
{ {
for (i = 0; i < node->sub_size; i++) for (i = 0; i < node->sub_size; i++)
if ((np = node->sub[i]) != NULL) if ((np = node->sub[i]) != NULL)
print_server_special_domains (np, parents, level); print_server_special_domains (np, parents, level, count);
} }
} }
...@@ -1417,6 +1417,7 @@ void check_servers(void) ...@@ -1417,6 +1417,7 @@ void check_servers(void)
struct irec *iface; struct irec *iface;
struct server *serv; struct server *serv;
int port = 0; int port = 0;
int count = 0;
/* interface may be new since startup */ /* interface may be new since startup */
if (!option_bool(OPT_NOWILD)) if (!option_bool(OPT_NOWILD))
...@@ -1424,7 +1425,9 @@ void check_servers(void) ...@@ -1424,7 +1425,9 @@ void check_servers(void)
char *levels[MAXLABELS + 1]; /* the root node starts at 1 */ char *levels[MAXLABELS + 1]; /* the root node starts at 1 */
struct htree_node *root = daemon->htree_special_domains; struct htree_node *root = daemon->htree_special_domains;
print_server_special_domains(root, levels, 0); print_server_special_domains(root, levels, 0, &count);
if (count > SERVERS_LOGGED)
my_syslog(LOG_INFO, _("using %d more nameservers"), count - SERVERS_LOGGED);
for (serv = daemon->servers; serv; serv = serv->next) for (serv = daemon->servers; serv; serv = serv->next)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment