diff options
-rw-r--r-- | CHANGES | 3 | ||||
-rw-r--r-- | configure.in | 6 | ||||
-rw-r--r-- | server/main.c | 21 |
3 files changed, 29 insertions, 1 deletions
@@ -2,6 +2,9 @@ Changes with Apache 2.3.11 + *) core: Reload resolv.conf on graceful restarts. PR 50619. + [Matt Miller <m miller f5 com>, Stefan Fritsch] + *) mod_mime: Ignore leading dots when looking for mime extensions. PR 50434 [Stefan Fritsch] diff --git a/configure.in b/configure.in index 0f4142435f..5082c6e1d4 100644 --- a/configure.in +++ b/configure.in @@ -400,6 +400,7 @@ sys/sem.h \ sys/sdt.h ) AC_HEADER_SYS_WAIT +AC_HEADER_RESOLV dnl ## Check for typedefs, structures, and compiler characteristics. @@ -416,6 +417,7 @@ LIBS="$saved_LIBS" dnl See Comment #Spoon +AC_SEARCH_LIBS(res_init, resolv, , [AC_SEARCH_LIBS(__res_init,resolv)]) AC_CHECK_FUNCS( \ getpwnam \ getgrnam \ @@ -424,7 +426,9 @@ bindprocessor \ prctl \ timegm \ getpgid \ -fopen64 +fopen64 \ +res_init \ +__res_init ) dnl confirm that a void pointer is large enough to store a long integer diff --git a/server/main.c b/server/main.c index 3ea53d4bb4..de9ac5236a 100644 --- a/server/main.c +++ b/server/main.c @@ -44,6 +44,16 @@ #include <unistd.h> #endif +#if HAVE_NETINET_IN_H +#include <netinet/in.h> +#endif +#if HAVE_ARPA_NAMESER_H +#include <arpa/nameser.h> +#endif +#if HAVE_RESOLV_H +#include <resolv.h> +#endif + /* WARNING: Win32 binds http_main.c dynamically to the server. Please place * extern functions and global data in another appropriate module. * @@ -679,6 +689,17 @@ int main(int argc, const char * const argv[]) apr_pool_clear(pconf); ap_clear_auth_internal(); +/* glibc has __res_init that is #defined to res_init */ +#if HAVE_RES_INIT || HAVE___RES_INIT + /* + * resolv.conf may have changed, so this will read/reread it. + */ + if (res_init() == -1) { + ap_log_error(APLOG_MARK, APLOG_WARNING, 0, NULL, + "Resolver initialization failed."); + } +#endif + for (mod = ap_prelinked_modules; *mod != NULL; mod++) { ap_register_hooks(*mod, pconf); } |