X-Git-Url: http://sjero.net/git/?p=wget;a=blobdiff_plain;f=src%2Fconnect.c;h=8f32f9843bb74d7fc58c589b3ae449505dd4e7c6;hp=0bf1a7f6fb9a46263771d9b9fe647e6f24422325;hb=2f6aa1d7417df1dfc58597777686fbd77179b9fd;hpb=86395b297b58c8c9b43d7ca8c42b831d4926dac6 diff --git a/src/connect.c b/src/connect.c index 0bf1a7f6..8f32f984 100644 --- a/src/connect.c +++ b/src/connect.c @@ -1,6 +1,7 @@ /* Establishing and handling network connections. Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, - 2004, 2005, 2006, 2007 Free Software Foundation, Inc. + 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software + Foundation, Inc. This file is part of GNU Wget. @@ -28,18 +29,22 @@ Corresponding Source for a non-source form of such a combination shall include the source code for the parts of OpenSSL used as well as that of the covered work. */ -#include +#include "wget.h" #include #include -#ifdef HAVE_UNISTD_H -# include -#endif +#include #include +#include +#include + #ifndef WINDOWS -# include -# include +# ifdef __VMS +# include "vms_ip.h" +# else /* def __VMS */ +# include +# endif /* def __VMS [else] */ # include # ifndef __BEOS__ # include @@ -48,16 +53,19 @@ as that of the covered work. */ #include #include -#ifdef HAVE_SYS_SELECT_H -# include -#endif /* HAVE_SYS_SELECT_H */ - -#include "wget.h" +#ifdef HAVE_SYS_TIME_H +# include +#endif #include "utils.h" #include "host.h" #include "connect.h" #include "hash.h" +/* Apparently needed for Interix: */ +#ifdef HAVE_STDINT_H +# include +#endif + /* Define sockaddr_storage where unavailable (presumably on IPv4-only hosts). */ @@ -194,8 +202,8 @@ resolve_bind_address (struct sockaddr *sa) { /* #### We should be able to print the error message here. */ logprintf (LOG_NOTQUIET, - _("%s: unable to resolve bind address `%s'; disabling bind.\n"), - exec_name, opt.bind_address); + _("%s: unable to resolve bind address %s; disabling bind.\n"), + exec_name, quote (opt.bind_address)); should_bind = false; return false; } @@ -265,9 +273,25 @@ connect_to_ip (const ip_address *ip, int port, const char *print) if (print) { const char *txt_addr = print_address (ip); - if (print && 0 != strcmp (print, txt_addr)) - logprintf (LOG_VERBOSE, _("Connecting to %s|%s|:%d... "), - escnonprint (print), txt_addr, port); + if (0 != strcmp (print, txt_addr)) + { + char *str = NULL, *name; + + if (opt.enable_iri && (name = idn_decode ((char *) print)) != NULL) + { + int len = strlen (print) + strlen (name) + 4; + str = xmalloc (len); + snprintf (str, len, "%s (%s)", name, print); + str[len-1] = '\0'; + xfree (name); + } + + logprintf (LOG_VERBOSE, _("Connecting to %s|%s|:%d... "), + str ? str : escnonprint_uri (print), txt_addr, port); + + if (str) + xfree (str); + } else logprintf (LOG_VERBOSE, _("Connecting to %s:%d... "), txt_addr, port); } @@ -286,7 +310,7 @@ connect_to_ip (const ip_address *ip, int port, const char *print) /* In case of error, we will go on anyway... */ int err = setsockopt (sock, IPPROTO_IPV6, IPV6_V6ONLY, &on, sizeof (on)); IF_DEBUG - if (err < 0) + if (err < 0) DEBUGP (("Failed setting IPV6_V6ONLY: %s", strerror (errno))); } #endif @@ -365,8 +389,8 @@ connect_to_host (const char *host, int port) if (!al) { logprintf (LOG_NOTQUIET, - _("%s: unable to resolve host address `%s'\n"), - exec_name, host); + _("%s: unable to resolve host address %s\n"), + exec_name, quote (host)); return E_HOST; } @@ -516,10 +540,11 @@ bool socket_ip_address (int sock, ip_address *ip, int endpoint) { struct sockaddr_storage storage; - struct sockaddr *sockaddr = (struct sockaddr *)&storage; + struct sockaddr *sockaddr = (struct sockaddr *) &storage; socklen_t addrlen = sizeof (storage); int ret; + memset (sockaddr, 0, addrlen); if (endpoint == ENDPOINT_LOCAL) ret = getsockname (sock, sockaddr, &addrlen); else if (endpoint == ENDPOINT_PEER) @@ -675,17 +700,6 @@ test_socket_open (int sock) /* Basic socket operations, mostly EINTR wrappers. */ -#if defined(WINDOWS) || defined(MSDOS) -# define read(fd, buf, cnt) recv (fd, buf, cnt, 0) -# define write(fd, buf, cnt) send (fd, buf, cnt, 0) -# define close(fd) closesocket (fd) -#endif - -#ifdef __BEOS__ -# define read(fd, buf, cnt) recv (fd, buf, cnt, 0) -# define write(fd, buf, cnt) send (fd, buf, cnt, 0) -#endif - static int sock_read (int fd, char *buf, int bufsize) {