/*
- * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2012 Hiroyuki Yamamoto and the Claws Mail team
+ * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
+ * Copyright (C) 1999-2015 Hiroyuki Yamamoto and the Claws Mail team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
+ *
*/
#ifdef HAVE_CONFIG_H
# include "config.h"
+#include "claws-features.h"
#endif
#if (defined (_XOPEN_SOURCE) && !defined (_BSD_SOURCE))
#ifdef G_OS_WIN32
#define SOCKET_IS_VALID(s) ((s) != INVALID_SOCKET)
#else
-#define SOCKET_IS_VALID(s) TRUE
+#define SOCKET_IS_VALID(s) (s != -1)
#endif
/* Due to the fact that socket under Windows are not represented by
return 0;
} else {
g_warning("Socket IO timeout\n");
+ log_error(LOG_PROTOCOL, _("Socket IO timeout.\n"));
return -1;
}
}
alarm(0);
signal(SIGALRM, prev_handler);
errno = ETIMEDOUT;
+ log_error(LOG_PROTOCOL, _("Connection timed out.\n"));
return -1;
}
alarm(timeout_secs);
alarm(0);
signal(SIGALRM, prev_handler);
g_printerr("%s: host lookup timed out.\n", hostname);
+ log_error(LOG_PROTOCOL, _("%s: host lookup timed out.\n"), hostname);
errno = 0;
return NULL;
}
signal(SIGALRM, prev_handler);
#endif
g_printerr("%s: unknown host.\n", hostname);
+ log_error(LOG_PROTOCOL, _("%s: unknown host.\n"), hostname);
errno = 0;
return NULL;
}
if (val != 0) {
close(fd);
+ log_error(LOG_PROTOCOL, _("%s:%d: connection failed (%s).\n"),
+ conn_data->hostname, conn_data->port,
+ g_strerror(val));
sock_connect_address_list_async(conn_data);
return FALSE;
}
if ((sock = socket(addr_data->family, addr_data->socktype,
addr_data->protocol)) < 0) {
perror("socket");
+
continue;
}
perror("connect");
close(sock);
}
- } else
+ } else {
break;
+ }
}
if (conn_data->cur_addr == NULL) {
- g_warning("sock_connect_address_list_async: "
- "connection to %s:%d failed\n",
- conn_data->hostname, conn_data->port);
conn_data->func(NULL, conn_data->data);
sock_connect_async_cancel(conn_data->id);
return -1;
if (ai_member[0] == AF_UNSPEC) {
g_warning("DNS lookup failed\n");
+ log_error(LOG_PROTOCOL, _("%s:%d: unknown host.\n"),
+ lookup_data->hostname, lookup_data->port);
break;
}
gchar len = 0;
g_warning("getaddrinfo for %s:%s failed: %s\n",
parm->hostname, port_str, gai_strerror(gai_err));
+ log_error(LOG_PROTOCOL, _("%s:%s: host lookup failed (%s).\n"),
+ parm->hostname, port_str, gai_strerror(gai_err));
fd_write_all(parm->pipe_fds[1], &len,
sizeof(len));
fd_write_all(parm->pipe_fds[1], (gchar *)ai_member,
}
#if USE_GNUTLS
-static gint ssl_read(gnutls_session ssl, gchar *buf, gint len)
+static gint ssl_read(gnutls_session_t ssl, gchar *buf, gint len)
{
gint r;
return -1;
default:
+ debug_print("Unexpected SSL read result %d\n", r);
+ errno = EIO;
return -1;
}
}
}
#if USE_GNUTLS
-static gint ssl_write(gnutls_session ssl, const gchar *buf, gint len)
+static gint ssl_write(gnutls_session_t ssl, const gchar *buf, gint len)
{
gint ret;
n = write(fd, buf, len);
if (n <= 0) {
- log_error(LOG_PROTOCOL, _("write on fd%d: %s\n"), fd, strerror(errno));
+ log_error(LOG_PROTOCOL, _("write on fd%d: %s\n"), fd, g_strerror(errno));
return -1;
}
len -= n;
}
#ifdef USE_GNUTLS
-static gint ssl_write_all(gnutls_session ssl, const gchar *buf, gint len)
+static gint ssl_write_all(gnutls_session_t ssl, const gchar *buf, gint len)
{
gint n, wrlen = 0;
return -1;
#ifdef G_OS_WIN32
+ fd_check_io(fd, G_IO_IN);
do {
/*
XXX:tm try nonblock
#ifdef USE_GNUTLS
if (sock->ssl)
ssl_done_socket(sock);
- if (sock->g_source != 0)
+ if (sock->g_source != 0 && g_main_context_find_source_by_id(NULL, sock->g_source) != NULL)
g_source_remove(sock->g_source);
sock->g_source = 0;
#endif