mirror of
https://github.com/moparisthebest/wget
synced 2024-07-03 16:38:41 -04:00
Properly format IPv6 addresses.
This commit is contained in:
parent
c2ee928302
commit
5e1badae1e
@ -1,3 +1,8 @@
|
||||
2012-01-09 Sasikantha Babu <sasikanth.v19@gmail.com> (tiny change)
|
||||
* 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-11-09 Gijs van Tulder <address@hidden>
|
||||
|
||||
* warc.c: Call gzdopen() with wb9 instead of wb+9, which fails on
|
||||
|
@ -298,7 +298,12 @@ connect_to_ip (const ip_address *ip, int port, const char *print)
|
||||
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. */
|
||||
@ -586,6 +591,36 @@ socket_ip_address (int sock, ip_address *ip, int endpoint)
|
||||
}
|
||||
}
|
||||
|
||||
/* 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
|
||||
|
@ -51,6 +51,7 @@ enum {
|
||||
ENDPOINT_PEER
|
||||
};
|
||||
bool socket_ip_address (int, ip_address *, int);
|
||||
int socket_family (int sock, int endpoint);
|
||||
|
||||
bool retryable_socket_connect_error (int);
|
||||
|
||||
|
12
src/http.c
12
src/http.c
@ -1951,11 +1951,17 @@ gethttp (struct url *u, struct http_stat *hs, int *dt, struct url *proxy,
|
||||
#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"
|
||||
|
Loading…
Reference in New Issue
Block a user