diff -ru orig/wget-1.13.4/src/ChangeLog wget-1.13.4/src/ChangeLog --- orig/wget-1.13.4/src/ChangeLog 2011-09-13 13:38:59.000000000 +0530 +++ wget-1.13.4/src/ChangeLog 2012-01-09 03:24:30.772500003 +0530 @@ -1,3 +1,8 @@ +2012-01-9 Sasikantha babu + * connect.c (connect_to_ip): properly formatted ipv6 address display + (socket_family): New function - returns socket family type + * http.c (gethttp): properly formatted ipv6 address display + 2011-09-13 Giuseppe Scrivano * ftp.c (ftp_retrieve_glob): Propagate correctly the `res' error diff -ru orig/wget-1.13.4/src/connect.c wget-1.13.4/src/connect.c --- orig/wget-1.13.4/src/connect.c 2011-08-08 02:25:23.000000000 +0530 +++ wget-1.13.4/src/connect.c 2012-01-09 02:38:42.433500008 +0530 @@ -293,7 +293,12 @@ xfree (str); } else - logprintf (LOG_VERBOSE, _("Connecting to %s:%d... "), txt_addr, port); + { + if (ip->family == AF_INET) + logprintf (LOG_VERBOSE, _("Connecting to %s:%d... "), txt_addr, port); + else if (ip->family == AF_INET6) + logprintf (LOG_VERBOSE, _("Connecting to [%s]:%d... "), txt_addr, port); + } } /* Store the sockaddr info to SA. */ @@ -581,6 +586,36 @@ } } +/* Get the socket family of connection on FD and store + Return family type on success, -1 otherwise. + + If ENDPOINT is ENDPOINT_LOCAL, it returns the sock family of the local + (client) side of the socket. Else if ENDPOINT is ENDPOINT_PEER, it + returns the sock family of the remote (peer's) side of the socket. */ + +int +socket_family (int sock, int endpoint) +{ + struct sockaddr_storage 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) + ret = getpeername (sock, sockaddr, &addrlen); + else + abort (); + + if (ret < 0) + return -1; + + return sockaddr->sa_family; +} + /* Return true if the error from the connect code can be considered retryable. Wget normally retries after errors, but the exception are the "unsupported protocol" type errors (possible on IPv4/IPv6 diff -ru orig/wget-1.13.4/src/connect.h wget-1.13.4/src/connect.h --- orig/wget-1.13.4/src/connect.h 2011-01-01 17:42:35.000000000 +0530 +++ wget-1.13.4/src/connect.h 2012-01-09 02:30:42.398500004 +0530 @@ -51,6 +51,7 @@ ENDPOINT_PEER }; bool socket_ip_address (int, ip_address *, int); +int socket_family (int sock, int endpoint); bool retryable_socket_connect_error (int); diff -ru orig/wget-1.13.4/src/http.c wget-1.13.4/src/http.c --- orig/wget-1.13.4/src/http.c 2011-09-07 16:28:01.000000000 +0530 +++ wget-1.13.4/src/http.c 2012-01-09 02:40:40.917500003 +0530 @@ -1792,11 +1792,17 @@ #endif &host_lookup_failed)) { + int family = socket_family (pconn.socket, ENDPOINT_PEER); sock = pconn.socket; using_ssl = pconn.ssl; - logprintf (LOG_VERBOSE, _("Reusing existing connection to %s:%d.\n"), - quotearg_style (escape_quoting_style, pconn.host), - pconn.port); + if (family == AF_INET6) + logprintf (LOG_VERBOSE, _("Reusing existing connection to [%s]:%d.\n"), + quotearg_style (escape_quoting_style, pconn.host), + pconn.port); + else + logprintf (LOG_VERBOSE, _("Reusing existing connection to %s:%d.\n"), + quotearg_style (escape_quoting_style, pconn.host), + pconn.port); DEBUGP (("Reusing fd %d.\n", sock)); if (pconn.authorized) /* If the connection is already authorized, the "Basic"