- Linux/glibc-2.1.2 takes a *long* time to look up names for AF_UNSPEC

addresses using getaddrinfo(). Added a configure switch to make the
   default lookup mode AF_INET
This commit is contained in:
Damien Miller 2000-01-19 14:36:49 +11:00
parent eaf9994f7e
commit 7d80e3484b
6 changed files with 31 additions and 2 deletions

View File

@ -1,6 +1,9 @@
20000119 20000119
- SCO compile fixes from Gary E. Miller <gem@rellim.com> - SCO compile fixes from Gary E. Miller <gem@rellim.com>
- Compile fix from Darren_Hall@progressive.com - Compile fix from Darren_Hall@progressive.com
- Linux/glibc-2.1.2 takes a *long* time to look up names for AF_UNSPEC
addresses using getaddrinfo(). Added a configure switch to make the
default lookup mode AF_INET
20000118 20000118
- Fixed --with-pid-dir option - Fixed --with-pid-dir option

View File

@ -150,6 +150,12 @@ created.
libsocks library isn't installed in a library searched by the compiler, libsocks library isn't installed in a library searched by the compiler,
add the directory name as the option. add the directory name as the option.
--with-ipv4-default instructs OpenSSH to use IPv4 by default for new
connections. Normally OpenSSH will try attempt to lookup both IPv6 and
IPv4 addresses. On Linux/glibc-2.1.2 this causes long delays in name
resolution. If this option is specified, you can still attempt to
connect to IPv6 addresses using the command line option '-6'.
If you need to pass special options to the compiler or linker, you If you need to pass special options to the compiler or linker, you
can specify these as enviornment variables before running ./configure. can specify these as enviornment variables before running ./configure.
For example: For example:

View File

@ -135,6 +135,9 @@
/* Specify location of ssh.pid */ /* Specify location of ssh.pid */
#undef PIDDIR #undef PIDDIR
/* Use IPv4 for connection by default, IPv6 can still if explicity asked */
#undef IPV4_DEFAULT
@BOTTOM@ @BOTTOM@
/* ******************* Shouldn't need to edit below this line ************** */ /* ******************* Shouldn't need to edit below this line ************** */

View File

@ -662,6 +662,15 @@ AC_ARG_WITH(default-path,
] ]
) )
AC_ARG_WITH(ipv4-default,
[ --with-ipv4-default Use IPv4 by connections unless '-6' specified],
[
if test "x$withval" != "xno" ; then
AC_DEFINE(IPV4_DEFAULT)
fi
]
)
piddir=/var/run piddir=/var/run
AC_ARG_WITH(pid-dir, AC_ARG_WITH(pid-dir,
[ --with-pid-dir=PATH Specify location of ssh.pid file], [ --with-pid-dir=PATH Specify location of ssh.pid file],

6
ssh.c
View File

@ -11,7 +11,7 @@
*/ */
#include "includes.h" #include "includes.h"
RCSID("$Id: ssh.c,v 1.16 2000/01/14 04:45:51 damien Exp $"); RCSID("$Id: ssh.c,v 1.17 2000/01/19 03:36:49 damien Exp $");
#include "xmalloc.h" #include "xmalloc.h"
#include "ssh.h" #include "ssh.h"
@ -29,7 +29,11 @@ const char *__progname = "ssh";
/* Flag indicating whether IPv4 or IPv6. This can be set on the command line. /* Flag indicating whether IPv4 or IPv6. This can be set on the command line.
Default value is AF_UNSPEC means both IPv4 and IPv6. */ Default value is AF_UNSPEC means both IPv4 and IPv6. */
#ifdef IPV4_DEFAULT
int IPv4or6 = AF_INET;
#else
int IPv4or6 = AF_UNSPEC; int IPv4or6 = AF_UNSPEC;
#endif
/* Flag indicating whether debug mode is on. This can be set on the command line. */ /* Flag indicating whether debug mode is on. This can be set on the command line. */
int debug_flag = 0; int debug_flag = 0;

6
sshd.c
View File

@ -11,7 +11,7 @@
*/ */
#include "includes.h" #include "includes.h"
RCSID("$Id: sshd.c,v 1.50 2000/01/14 04:45:52 damien Exp $"); RCSID("$Id: sshd.c,v 1.51 2000/01/19 03:36:50 damien Exp $");
#include "xmalloc.h" #include "xmalloc.h"
#include "rsa.h" #include "rsa.h"
@ -49,7 +49,11 @@ char *config_file_name = SERVER_CONFIG_FILE;
* Flag indicating whether IPv4 or IPv6. This can be set on the command line. * Flag indicating whether IPv4 or IPv6. This can be set on the command line.
* Default value is AF_UNSPEC means both IPv4 and IPv6. * Default value is AF_UNSPEC means both IPv4 and IPv6.
*/ */
#ifdef IPV4_DEFAULT
int IPv4or6 = AF_INET;
#else
int IPv4or6 = AF_UNSPEC; int IPv4or6 = AF_UNSPEC;
#endif
/* /*
* Debug mode flag. This can be set on the command line. If debug * Debug mode flag. This can be set on the command line. If debug