2007-11-29 [colin] 3.1.0cvs45
authorColin Leroy <colin@colino.net>
Thu, 29 Nov 2007 18:25:42 +0000 (18:25 +0000)
committerColin Leroy <colin@colino.net>
Thu, 29 Nov 2007 18:25:42 +0000 (18:25 +0000)
* src/common/ssl_certificate.c
Use the more modern getaddrinfo instead of
gethostbyname when possible

ChangeLog
PATCHSETS
configure.ac
src/common/ssl_certificate.c

index 0af1f9f2c7ef47779d9c217bbf4495807166a6d7..f6b4dc7f0cd0adda67e959c025c3ec01a1d4d83b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2007-11-29 [colin]     3.1.0cvs45
+
+       * src/common/ssl_certificate.c
+               Use the more modern getaddrinfo instead of 
+               gethostbyname when possible
+
 2007-11-28 [colin]     3.1.0cvs44
 
        * src/summaryview.c
index 382e43d49533a6afd826c61a6eeb638c81350c7f..ec11cb2a35b11842c7c5e3b06e07c223b8d60fc0 100644 (file)
--- a/PATCHSETS
+++ b/PATCHSETS
 ( cvs diff -u -r 1.207.2.188 -r 1.207.2.189 src/folderview.c;  ) > 3.1.0cvs42.patchset
 ( cvs diff -u -r 1.1.2.6 -r 1.1.2.7 src/prefs_summary_open.c;  ) > 3.1.0cvs43.patchset
 ( cvs diff -u -r 1.395.2.342 -r 1.395.2.343 src/summaryview.c;  ) > 3.1.0cvs44.patchset
+( cvs diff -u -r 1.4.2.23 -r 1.4.2.24 src/common/ssl_certificate.c;  ) > 3.1.0cvs45.patchset
index 83549d03335bc53872bac4e3c9e6e0cff203a36a..016f2217558f68da599cd4ff1a0a4b4d6af3ee16 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=1
 MICRO_VERSION=0
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=44
+EXTRA_VERSION=45
 EXTRA_RELEASE=
 EXTRA_GTK2_VERSION=
 
index ce707566e1ac1d18aa6abf9798f9fe2b5537e299..00b7fd658d3e9201b504da36408b39cdb30ee257 100644 (file)
@@ -118,16 +118,47 @@ time_t asn1toTime(ASN1_TIME *asn1Time)
 
 static char * get_fqdn(char *host)
 {
+#ifdef INET6
+        gint gai_err;
+        struct addrinfo hints, *res;
+#else
        struct hostent *hp;
+#endif
 
        if (host == NULL || strlen(host) == 0)
                return g_strdup("");
-
+#ifdef INET6
+        memset(&hints, 0, sizeof(hints));
+        hints.ai_flags = AI_CANONNAME;
+        hints.ai_family = AF_UNSPEC;
+        hints.ai_socktype = SOCK_STREAM;
+        hints.ai_protocol = IPPROTO_TCP;
+
+        gai_err = getaddrinfo(host, NULL, &hints, &res);
+        if (gai_err != 0) {
+                g_warning("getaddrinfo for %s failed: %s\n",
+                          host, gai_strerror(gai_err));
+               return g_strdup(host);
+        }
+       if (res != NULL) {
+               if (res->ai_canonname && strlen(res->ai_canonname)) {
+                       gchar *fqdn = g_strdup(res->ai_canonname);
+                       freeaddrinfo(res);
+                       return fqdn;
+               } else {
+                       freeaddrinfo(res);
+                       return g_strdup(host);
+               }
+       } else {
+               return g_strdup(host);
+       }
+#else
        hp = my_gethostbyname(host);
        if (hp == NULL)
                return g_strdup(host); /*caller should free*/
        else 
                return g_strdup(hp->h_name);
+#endif
 }
 
 char * readable_fingerprint(unsigned char *src, int len)