Stop calling res_init

Emacs shouldn’t need to call res_init any more, now that nscd or
equivalent is everywhere.  On modern systems, calling res_init
simply slows Emacs down.  On ancient systems lacking nscd Emacs
will still work well enough with this change; it’s just that it
won’t respond to changes in /etc/resolv.conf.
* configure.ac (HAVE_RES_INIT): Remove.  Worry about -lresolv only
when configured --with-hesiod.  Hesiod is still used; see, e.g.:
https://soylentnews.org/meta/article.pl?sid=15/07/13/0255214
* src/Makefile.in (LIBRESOLV): Remove.  All uses removed.
This commit is contained in:
Paul Eggert 2016-02-29 09:39:45 -08:00
parent 938f104f1b
commit 93bf7d5284
4 changed files with 5 additions and 58 deletions

View file

@ -254,7 +254,6 @@ HAVE_RANDOM
HAVE_READLINK
HAVE_READLINKAT
HAVE_RECVFROM
HAVE_RES_INIT
HAVE_RINT
HAVE_RSVG
HAVE_SELECT

View file

@ -4000,44 +4000,13 @@ AC_CACHE_CHECK([whether signals can be handled on alternate stack],
[emacs_cv_alternate_stack=yes],
[emacs_cv_alternate_stack=no])])
# Do we have res_init, for detecting changes in /etc/resolv.conf?
# On Darwin, res_init appears not to be useful: see bug#562 and
# http://lists.gnu.org/archive/html/emacs-devel/2007-11/msg01467.html
resolv=no
if test $opsys != darwin; then
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netinet/in.h>
#include <arpa/nameser.h>
#include <resolv.h>]],
[[return res_init();]])],
have_res_init=yes, have_res_init=no)
if test "$have_res_init" = no; then
OLIBS="$LIBS"
LIBS="$LIBS -lresolv"
AC_MSG_CHECKING(for res_init with -lresolv)
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netinet/in.h>
#include <arpa/nameser.h>
#include <resolv.h>]],
[[return res_init();]])],
have_res_init=yes, have_res_init=no)
AC_MSG_RESULT($have_res_init)
if test "$have_res_init" = yes ; then
resolv=yes
fi
LIBS="$OLIBS"
fi
if test "$have_res_init" = yes; then
AC_DEFINE(HAVE_RES_INIT, 1, [Define to 1 if res_init is available.])
fi
fi dnl !darwin
# Do we need the Hesiod library to provide the support routines?
dnl FIXME? Should we be skipping this on Darwin too?
LIBHESIOD=
LIBRESOLV=
if test "$with_hesiod" != no ; then
# Don't set $LIBS here -- see comments above. FIXME which comments?
resolv=no
AC_CHECK_FUNC(res_send, , [AC_CHECK_FUNC(__res_send, ,
[AC_CHECK_LIB(resolv, res_send, resolv=yes,
[AC_CHECK_LIB(resolv, __res_send, resolv=yes)])])])
@ -4046,21 +4015,16 @@ if test "$with_hesiod" != no ; then
else
RESOLVLIB=
fi
hesiod=no
AC_CHECK_FUNC(hes_getmailhost, , [AC_CHECK_LIB(hesiod, hes_getmailhost,
hesiod=yes, :, $RESOLVLIB)])
if test x"$hesiod" = xyes; then
LIBHESIOD=-lhesiod
LIBRESOLV=$RESOLVLIB
fi
fi
AC_SUBST(LIBHESIOD)
# Do we need libresolv (due to res_init or Hesiod)?
if test "$resolv" = yes && test $opsys != darwin; then
LIBRESOLV=-lresolv
else
LIBRESOLV=
fi
AC_SUBST(LIBRESOLV)
# These tell us which Kerberos-related libraries to use.

View file

@ -302,9 +302,6 @@ CM_OBJ=@CM_OBJ@
LIBGPM = @LIBGPM@
## -lresolv, or empty.
LIBRESOLV = @LIBRESOLV@
LIBSELINUX_LIBS = @LIBSELINUX_LIBS@
LIBGNUTLS_LIBS = @LIBGNUTLS_LIBS@
@ -485,7 +482,7 @@ LIBES = $(LIBS) $(W32_LIBS) $(LIBS_GNUSTEP) $(LIBX_BASE) $(LIBIMAGE) \
$(WEBKIT_LIBS) \
$(LIB_EACCESS) $(LIB_FDATASYNC) $(LIB_TIMER_TIME) $(DBUS_LIBS) \
$(LIB_EXECINFO) $(XRANDR_LIBS) $(XINERAMA_LIBS) $(XFIXES_LIBS) \
$(LIBXML2_LIBS) $(LIBGPM) $(LIBRESOLV) $(LIBS_SYSTEM) $(CAIRO_LIBS) \
$(LIBXML2_LIBS) $(LIBGPM) $(LIBS_SYSTEM) $(CAIRO_LIBS) \
$(LIBS_TERMCAP) $(GETLOADAVG_LIBS) $(SETTINGS_LIBS) $(LIBSELINUX_LIBS) \
$(FREETYPE_LIBS) $(FONTCONFIG_LIBS) $(LIBOTF_LIBS) $(M17N_FLT_LIBS) \
$(LIBGNUTLS_LIBS) $(LIB_PTHREAD) $(GETADDRINFO_A_LIBS) \

View file

@ -75,11 +75,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
# include <sys/stropts.h>
#endif
#ifdef HAVE_RES_INIT
#include <arpa/nameser.h>
#include <resolv.h>
#endif
#ifdef HAVE_UTIL_H
#include <util.h>
#endif
@ -3827,10 +3822,6 @@ usage: (make-network-process &rest ARGS) */)
immediate_quit = 1;
QUIT;
#ifdef HAVE_RES_INIT
res_init ();
#endif
struct addrinfo hints;
memset (&hints, 0, sizeof hints);
hints.ai_family = family;
@ -3910,10 +3901,6 @@ usage: (make-network-process &rest ARGS) */)
immediate_quit = 1;
QUIT;
#ifdef HAVE_RES_INIT
res_init ();
#endif
host_info_ptr = gethostbyname ((const char *) SDATA (host));
immediate_quit = 0;