# include "config.h"
#endif
+#include <lib-lib/mem.h>
+#include <lib-lib/str.h>
+#include <lib-lib/macros.h>
+
#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 <unistd.h>
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);
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) {
debug_print (dbg, ("< %s\n", buf));
- /* number of bytes read, not mutt_strlen */
+ /* number of bytes read, not m_strlen*/
return i + 1;
}
/* head is special case, doesn't need prev updated */
if (iter == conn) {
Connections = iter->next;
- FREE (&iter);
+ p_delete(&iter);
return;
}
if (iter->next == conn) {
tmp = iter->next;
iter->next = tmp->next;
- FREE (&tmp);
+ p_delete(&tmp);
return;
}
iter = iter->next;
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;
}
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));
{
CONNECTION *conn;
- conn = (CONNECTION *) safe_calloc (1, sizeof (CONNECTION));
+ conn = p_new(CONNECTION, 1);
conn->fd = -1;
return 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;
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;
}
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;
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);
}
# ifdef HAVE_LIBIDN
- FREE (&host_idna);
+ p_delete(&host_idna);
# endif
mutt_message (_("Connecting to %s..."), conn->account.host);
if (fd >= 0) {
if ((rc = socket_connect (fd, (struct sockaddr *) &sin)) == 0) {
+ fcntl (fd, F_SETFD, FD_CLOEXEC);
conn->fd = fd;
break;
}