next part of ipv6-ization is here: wget & httpd

This commit is contained in:
Denis Vlasenko
2007-01-12 10:35:23 +00:00
parent f8138d1f91
commit 6536a9b583
8 changed files with 144 additions and 122 deletions

View File

@@ -38,7 +38,7 @@ void xconnect(int s, const struct sockaddr *s_addr, socklen_t addrlen)
* default_port */
unsigned bb_lookup_port(const char *port, const char *protocol, unsigned default_port)
{
unsigned port_nr = htons(default_port);
unsigned port_nr = default_port;
if (port) {
int old_errno;
@@ -49,13 +49,11 @@ unsigned bb_lookup_port(const char *port, const char *protocol, unsigned default
if (errno || port_nr > 65535) {
struct servent *tserv = getservbyname(port, protocol);
if (tserv)
port_nr = tserv->s_port;
} else {
port_nr = htons(port_nr);
port_nr = ntohs(tserv->s_port);
}
errno = old_errno;
}
return port_nr;
return (uint16_t)port_nr;
}
@@ -148,7 +146,7 @@ static len_and_sockaddr* str2sockaddr(const char *host, int port, int ai_flags)
r = xmalloc(offsetof(len_and_sockaddr, sa) + result->ai_addrlen);
r->len = result->ai_addrlen;
memcpy(&r->sa, result->ai_addr, result->ai_addrlen);
set_port(r, port);
set_port(r, htons(port));
freeaddrinfo(result);
return r;
}
@@ -237,6 +235,7 @@ static char* sockaddr2str(const struct sockaddr *sa, socklen_t salen, int flags)
flags | NI_NUMERICSERV /* do not resolve port# */
);
if (rc) return NULL;
// We probably need to use [%s]:%s for IPv6...
return xasprintf("%s:%s", host, serv);
}