+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
( 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
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)