diff options
author | joe <joe@61a7d7f5-40b7-0310-9c16-bb0ea8cb1845> | 2011-09-02 09:52:44 +0000 |
---|---|---|
committer | joe <joe@61a7d7f5-40b7-0310-9c16-bb0ea8cb1845> | 2011-09-02 09:52:44 +0000 |
commit | 8eb1d1a788ecd18222d2b277cde0c8d95eb089e3 (patch) | |
tree | 25c3865ac6a13716f07b04d21b3ed8aa82181e04 /src/ne_sspi.c | |
parent | 7b8d55aa400ed4ad6ebf32837579f06a794de6ab (diff) | |
download | neon-8eb1d1a788ecd18222d2b277cde0c8d95eb089e3.tar.gz |
* src/ne_sspi.c (canonical_hostname): Use NE_ADDR_CANON to determine
canonical hostname.
git-svn-id: http://svn.webdav.org/repos/projects/neon/trunk@1853 61a7d7f5-40b7-0310-9c16-bb0ea8cb1845
Diffstat (limited to 'src/ne_sspi.c')
-rw-r--r-- | src/ne_sspi.c | 30 |
1 files changed, 10 insertions, 20 deletions
diff --git a/src/ne_sspi.c b/src/ne_sspi.c index 4b59cdc..9c67f5c 100644 --- a/src/ne_sspi.c +++ b/src/ne_sspi.c @@ -337,34 +337,24 @@ static int freeBuffer(SecBufferDesc * secBufferDesc) */ static char *canonical_hostname(const char *serverName) { - char *hostname; - ne_sock_addr *addresses; + const char *hostname; + ne_sock_addr *addr; - /* DNS resolution. It would be useful to be able to use the - * AI_CANONNAME flag where getaddrinfo() is available, but the - * reverse-lookup is sufficient and simpler. */ - addresses = ne_addr_resolve(serverName, 0); - if (ne_addr_result(addresses)) { + addr = ne_addr_resolve(serverName, NE_ADDR_CANON); + if (ne_addr_result(addr) || ne_addr_canonical(addr) == NULL) { /* Lookup failed */ char buf[256]; NE_DEBUG(NE_DBG_HTTPAUTH, "sspi: Could not resolve IP address for `%s': %s\n", - serverName, ne_addr_error(addresses, buf, sizeof buf)); + serverName, ne_addr_error(addr, buf, sizeof buf)); hostname = ne_strdup(serverName); - } else { - char hostbuffer[256]; - const ne_inet_addr *address = ne_addr_first(addresses); - - if (ne_iaddr_reverse(address, hostbuffer, sizeof hostbuffer) == 0) { - hostname = ne_strdup(hostbuffer); - } else { - NE_DEBUG(NE_DBG_HTTPAUTH, "sspi: Could not resolve host name" - "from IP address for `%s'\n", serverName); - hostname = ne_strdup(serverName); - } } + else { + hostname = ne_strdup(ne_addr_canonical(addr)); + } + + ne_addr_destroy(addr); - ne_addr_destroy(addresses); return hostname; } |