(socket_connection): Move realhost out of #ifdefs.
authorJan Djärv <jan.h.d@swipnet.se>
Mon, 19 Nov 2007 11:09:20 +0000 (11:09 +0000)
committerJan Djärv <jan.h.d@swipnet.se>
Mon, 19 Nov 2007 11:09:20 +0000 (11:09 +0000)
Set realhost both for HAVE_GETADDRINFO and !HAVE_GETADDRINFO.

lib-src/ChangeLog
lib-src/pop.c

index 9a88a60..a4d67b8 100644 (file)
@@ -1,3 +1,8 @@
+2007-11-19  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * pop.c (socket_connection): Move realhost out of #ifdefs.
+       Set realhost both for HAVE_GETADDRINFO and !HAVE_GETADDRINFO.
+
 2007-11-18  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
        * pop.c (socket_connection): Use getaddrinfo if available.
index df9e41f..ea05771 100644 (file)
@@ -1022,6 +1022,7 @@ socket_connection (host, flags)
   char found_port = 0;
   char *service;
   int sock;
+  char *realhost;
 #ifdef KERBEROS
 #ifdef KERBEROS5
   krb5_error_code rem;
@@ -1037,7 +1038,6 @@ socket_connection (host, flags)
   CREDENTIALS cred;
   Key_schedule schedule;
   int rem;
-  char *realhost;
 #endif /* KERBEROS5 */
 #endif /* KERBEROS */
 
@@ -1107,7 +1107,7 @@ socket_connection (host, flags)
 #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 @@ socket_connection (host, flags)
           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 @@ socket_connection (host, flags)
       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 @@ socket_connection (host, flags)
 
 #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))
     {