changeset 86235:79cf32b82b23

(socket_connection): Move realhost out of #ifdefs. Set realhost both for HAVE_GETADDRINFO and !HAVE_GETADDRINFO.
author Jan Djärv <jan.h.d@swipnet.se>
date Mon, 19 Nov 2007 11:09:11 +0000
parents 860a7a8e779e
children 7df795bd9533
files lib-src/pop.c
diffstat 1 files changed, 13 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/lib-src/pop.c	Mon Nov 19 08:50:04 2007 +0000
+++ b/lib-src/pop.c	Mon Nov 19 11:09:11 2007 +0000
@@ -1022,6 +1022,7 @@
   char found_port = 0;
   char *service;
   int sock;
+  char *realhost;
 #ifdef KERBEROS
 #ifdef KERBEROS5
   krb5_error_code rem;
@@ -1037,7 +1038,6 @@
   CREDENTIALS cred;
   Key_schedule schedule;
   int rem;
-  char *realhost;
 #endif /* KERBEROS5 */
 #endif /* KERBEROS */
 
@@ -1107,7 +1107,7 @@
 #ifdef HAVE_GETADDRINFO
   memset (&hints, 0, sizeof(hints));
   hints.ai_socktype = SOCK_STREAM;
-  hints.ai_flags = AI_ADDRCONFIG;
+  hints.ai_flags = AI_ADDRCONFIG | AI_CANONNAME;
   hints.ai_family = AF_INET;
   do
     {
@@ -1136,6 +1136,11 @@
           it = it->ai_next;
         }
       connect_ok = it != NULL;
+      if (connect_ok)
+        {
+          realhost = alloca (strlen (it->ai_canonname) + 1);
+          strcpy (realhost, it->ai_canonname);
+        }
       freeaddrinfo (res);
     }
 #else /* !HAVE_GETADDRINFO */
@@ -1159,6 +1164,12 @@
       hostent->h_addr_list++;
     }
   connect_ok = *hostent->h_addr_list != NULL;
+  if (! connect_ok)
+    {
+      realhost = alloca (strlen (hostent->h_name) + 1);
+      strcpy (realhost, hostent->h_name);
+    }
+
 #endif /* !HAVE_GETADDRINFO */
 
 #define CONNECT_ERROR "Could not connect to POP server: "
@@ -1175,9 +1186,6 @@
 
 #ifdef KERBEROS
 
-  realhost = alloca (strlen (hostent->h_name) + 1);
-  strcpy (realhost, hostent->h_name);
-
 #define KRB_ERROR "Kerberos error connecting to POP server: "
   if (! (flags & POP_NO_KERBEROS))
     {