X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=mutt_socket.c;h=664f61f1ee15fb376ce8b6b44b9ecb8909decf2f;hp=a38534c7e52603b472059a27c9df78391903bca0;hb=4a0b020a3048f079979bea43c04f9fe388f9354d;hpb=18ea5e8b861632627335b8d94787c742dbf5f567 diff --git a/mutt_socket.c b/mutt_socket.c index a38534c..664f61f 100644 --- a/mutt_socket.c +++ b/mutt_socket.c @@ -13,19 +13,20 @@ # include "config.h" #endif +#include +#include +#include + #include "mutt.h" #include "globals.h" #include "mutt_socket.h" #include "mutt_tunnel.h" -#if defined(USE_SSL) || defined(USE_GNUTLS) || defined(USE_NSS) +#if defined(USE_SSL) || defined(USE_GNUTLS) # include "mutt_ssl.h" #endif #include "mutt_idna.h" -#include "lib/mem.h" -#include "lib/intl.h" -#include "lib/str.h" #include "lib/debug.h" #include @@ -103,7 +104,7 @@ int mutt_socket_write_d (CONNECTION * conn, const char *buf, int dbg) return -1; } - len = mutt_strlen (buf); + len = m_strlen(buf); if ((rc = conn->conn_write (conn, buf, len)) < 0) { debug_print (1, ("error writing, closing socket\n")); mutt_socket_close (conn); @@ -144,11 +145,11 @@ int mutt_socket_readchar (CONNECTION * conn, char *c) return 1; } -int mutt_socket_readln_d (char *buf, size_t buflen, CONNECTION * conn, +int mutt_socket_readln_d (char *buf, ssize_t buflen, CONNECTION * conn, int dbg) { char ch; - int i; + ssize_t i; for (i = 0; i < buflen - 1; i++) { if (mutt_socket_readchar (conn, &ch) != 1) { @@ -169,7 +170,7 @@ int mutt_socket_readln_d (char *buf, size_t buflen, CONNECTION * conn, debug_print (dbg, ("< %s\n", buf)); - /* number of bytes read, not mutt_strlen */ + /* number of bytes read, not m_strlen*/ return i + 1; } @@ -189,7 +190,7 @@ void mutt_socket_free (CONNECTION * conn) /* head is special case, doesn't need prev updated */ if (iter == conn) { Connections = iter->next; - FREE (&iter); + p_delete(&iter); return; } @@ -197,7 +198,7 @@ void mutt_socket_free (CONNECTION * conn) if (iter->next == conn) { tmp = iter->next; iter->next = tmp->next; - FREE (&tmp); + p_delete(&tmp); return; } iter = iter->next; @@ -237,12 +238,8 @@ 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) { -#ifdef USE_SSL - ssl_socket_setup (conn); -#elif USE_NSS - mutt_nss_socket_setup (conn); -#elif USE_GNUTLS - if (mutt_gnutls_socket_setup (conn) < 0) { +#if defined (USE_SSL) || defined (USE_GNUTLS) + if (mutt_ssl_socket_setup (conn) < 0) { mutt_socket_free (conn); return NULL; } @@ -270,7 +267,7 @@ static int socket_preconnect (void) int rc; int save_errno; - if (mutt_strlen (Preconnect)) { + if (m_strlen(Preconnect)) { debug_print (2, ("Executing preconnect: %s\n", Preconnect)); rc = mutt_system (Preconnect); debug_print (2, ("Preconnect result: %d\n", rc)); @@ -328,7 +325,7 @@ static CONNECTION *socket_new_conn (void) { CONNECTION *conn; - conn = (CONNECTION *) safe_calloc (1, sizeof (CONNECTION)); + conn = p_new(CONNECTION, 1); conn->fd = -1; return conn; @@ -382,7 +379,7 @@ int raw_socket_open (CONNECTION * conn) struct addrinfo *cur; /* we accept v4 or v6 STREAM sockets */ - memset (&hints, 0, sizeof (hints)); + p_clear(&hints, 1); if (option (OPTUSEIPV6)) hints.ai_family = AF_UNSPEC; @@ -408,11 +405,12 @@ int raw_socket_open (CONNECTION * conn) rc = getaddrinfo (host_idna, port, &hints, &res); # ifdef HAVE_LIBIDN - FREE (&host_idna); + p_delete(&host_idna); # endif if (rc) { mutt_error (_("Could not find the host \"%s\""), conn->account.host); + mutt_sleep (2); return -1; } @@ -441,7 +439,7 @@ int raw_socket_open (CONNECTION * conn) struct hostent *he; int i; - memset (&sin, 0, sizeof (sin)); + p_clear(&sin, 1); sin.sin_port = htons (conn->account.port); sin.sin_family = AF_INET; @@ -458,7 +456,7 @@ int raw_socket_open (CONNECTION * conn) if ((he = gethostbyname (host_idna)) == NULL) { # ifdef HAVE_LIBIDN - FREE (&host_idna); + p_delete(&host_idna); # endif mutt_error (_("Could not find the host \"%s\""), conn->account.host); @@ -466,7 +464,7 @@ int raw_socket_open (CONNECTION * conn) } # ifdef HAVE_LIBIDN - FREE (&host_idna); + p_delete(&host_idna); # endif mutt_message (_("Connecting to %s..."), conn->account.host); @@ -478,6 +476,7 @@ int raw_socket_open (CONNECTION * conn) if (fd >= 0) { if ((rc = socket_connect (fd, (struct sockaddr *) &sin)) == 0) { + fcntl (fd, F_SETFD, FD_CLOEXEC); conn->fd = fd; break; }