Make nscd load /etc/host.conf options in aicache

This patch makes sure _res_hconf is initialized before resolving is being done.

However, this would not be enough since nscd has its own _res_hconf due to
nscd/res_hconf.c; _res_hconf_init() would work on different _res_hconf instance
than the NSS routines. We just need to make sure nscd and glibc share the same
_res_hconf instance - this should not be a problem since users should run
matching versions of glibc and nscd anyway.
This commit is contained in:
Petr Baudis 2010-08-22 16:15:17 +02:00 committed by Petr Baudis
parent b9be604a7b
commit b321e863ac
3 changed files with 11 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2010-08-19 Petr Baudis <pasky@suse.cz>
[BZ #11928]
* nscd/aicache.c (addhstaiX): Ensure _res_hconf has been initialized.
* resolv/res_hconf.c (_res_hconf): Do not redefine outside of libc.
2010-05-31 Petr Baudis <pasky@suse.cz>
[BZ #10085]

View File

@ -26,6 +26,7 @@
#include <time.h>
#include <unistd.h>
#include <sys/mman.h>
#include <resolv/res_hconf.h>
#include "dbg_log.h"
#include "nscd.h"
@ -103,6 +104,8 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
if (__res_maybe_init (&_res, 0) == -1)
no_more = 1;
if (!_res_hconf.initialized)
_res_hconf_init ();
/* If we are looking for both IPv4 and IPv6 address we don't want
the lookup functions to automatically promote IPv4 addresses to

View File

@ -84,7 +84,9 @@ static const struct cmd
};
/* Structure containing the state. */
#ifndef NOT_IN_libc
struct hconf _res_hconf;
#endif
/* Skip white space. */
static const char *