getaddrinfo shall exist on any modern platform madmutt will run on.
[apps/madmutt.git] / lib-sys / mutt_socket.c
index 0218610..3528db4 100644 (file)
@@ -9,23 +9,13 @@
  * please see the file GPL in the top level source directory.
  */
 
-#if HAVE_CONFIG_H
-# include "config.h"
-#endif
+#include <lib-lib/lib-lib.h>
 
-#include <unistd.h>
 #include <netinet/in.h>
 #include <netdb.h>
-#include <stdlib.h>
-#include <fcntl.h>
-#include <sys/types.h>
 #include <sys/socket.h>
-#include <string.h>
-#include <errno.h>
 
-#include <lib-lib/mem.h>
-#include <lib-lib/str.h>
-#include <lib-lib/macros.h>
+#include <lib-ui/curses.h>
 
 #include "mutt.h"
 #include "globals.h"
 #include "mutt_socket.h"
 #include "mutt_tunnel.h"
 #include "mutt_signal.h"
-#include "mutt_ssl.h"
 
+#ifdef HAVE_LIBIDN
+#include <idna.h>
+#endif
 #include "mutt_idna.h"
 
 /* support for multiple socket connections */
@@ -222,21 +214,11 @@ CONNECTION *mutt_conn_find (const CONNECTION * start, const ACCOUNT * account)
   if (Tunnel && *Tunnel)
     mutt_tunnel_socket_setup (conn);
   else if (account->flags & M_ACCT_SSL) {
-#if defined (USE_SSL) || defined (USE_GNUTLS)
     if (mutt_ssl_socket_setup (conn) < 0) {
       mutt_socket_free (conn);
       return NULL;
     }
-#else
-    mutt_error _("SSL is unavailable.");
-
-    mutt_sleep (2);
-    mutt_socket_free (conn);
-
-    return NULL;
-#endif
-  }
-  else {
+  } else {
     conn->conn_read = raw_socket_read;
     conn->conn_write = raw_socket_write;
     conn->conn_open = raw_socket_open;
@@ -273,10 +255,8 @@ static int socket_connect (int fd, struct sockaddr *sa)
 
   if (sa->sa_family == AF_INET)
     sa_size = sizeof (struct sockaddr_in);
-#ifdef HAVE_GETADDRINFO
   else if (sa->sa_family == AF_INET6)
     sa_size = sizeof (struct sockaddr_in6);
-#endif
   else {
     return -1;
   }
@@ -349,9 +329,6 @@ int raw_socket_open (CONNECTION * conn)
 
   char *host_idna = NULL;
 
-#ifdef HAVE_GETADDRINFO
-/* --- IPv4/6 --- */
-
   /* "65536\0" */
   char port[6];
   struct addrinfo hints;
@@ -381,7 +358,6 @@ int raw_socket_open (CONNECTION * conn)
 
   mutt_message (_("Looking up %s..."), conn->account.host);
 
-
   rc = getaddrinfo (host_idna, port, &hints, &res);
 
 # ifdef HAVE_LIBIDN
@@ -412,60 +388,6 @@ int raw_socket_open (CONNECTION * conn)
 
   freeaddrinfo (res);
 
-#else
-  /* --- IPv4 only --- */
-
-  struct sockaddr_in sin;
-  struct hostent *he;
-  int i;
-
-  p_clear(&sin, 1);
-  sin.sin_port = htons (conn->account.port);
-  sin.sin_family = AF_INET;
-
-# ifdef HAVE_LIBIDN
-  if (idna_to_ascii_lz (conn->account.host, &host_idna, 1) != IDNA_SUCCESS) {
-    mutt_error (_("Bad IDN \"%s\"."), conn->account.host);
-    return -1;
-  }
-# else
-  host_idna = conn->account.host;
-# endif
-
-  mutt_message (_("Looking up %s..."), conn->account.host);
-
-  if ((he = gethostbyname (host_idna)) == NULL) {
-# ifdef HAVE_LIBIDN
-    p_delete(&host_idna);
-# endif
-    mutt_error (_("Could not find the host \"%s\""), conn->account.host);
-
-    return -1;
-  }
-
-# ifdef HAVE_LIBIDN
-  p_delete(&host_idna);
-# endif
-
-  mutt_message (_("Connecting to %s..."), conn->account.host);
-
-  rc = -1;
-  for (i = 0; he->h_addr_list[i] != NULL; i++) {
-    memcpy (&sin.sin_addr, he->h_addr_list[i], he->h_length);
-    fd = socket (PF_INET, SOCK_STREAM, IPPROTO_IP);
-
-    if (fd >= 0) {
-      if ((rc = socket_connect (fd, (struct sockaddr *) &sin)) == 0) {
-        fcntl (fd, F_SETFD, FD_CLOEXEC);
-        conn->fd = fd;
-        break;
-      }
-      else
-        close (fd);
-    }
-  }
-
-#endif
   if (rc) {
     mutt_error (_("Could not connect to %s (%s)."), conn->account.host,
                 (rc > 0) ? strerror (rc) : _("unknown error"));