if (session->conn_id < 0) {
g_warning("can't connect to server.");
session_close(session);
+ if (session->connect_finished)
+ session->connect_finished(session, FALSE);
return -1;
}
if (sock == NULL) {
g_warning("can't connect to server.");
session_close(session);
+ if (session->connect_finished)
+ session->connect_finished(session, FALSE);
return -1;
}
sock->is_smtp = session->is_smtp;
if (!sock) {
g_warning("can't connect to server.");
session->state = SESSION_ERROR;
+ if (session->connect_finished)
+ session->connect_finished(session, FALSE);
return -1;
}
g_warning("can't initialize SSL.");
log_error(LOG_PROTOCOL, _("SSL handshake failed\n"));
session->state = SESSION_ERROR;
+ if (session->connect_finished)
+ session->connect_finished(session, FALSE);
return -1;
}
}
/* we could have gotten a timeout while waiting for user input in
* an SSL certificate dialog */
- if (session->state == SESSION_TIMEOUT)
+ if (session->state == SESSION_TIMEOUT) {
+ if (session->connect_finished)
+ session->connect_finished(session, FALSE);
return -1;
+ }
sock_set_nonblocking_mode(sock, session->nonblocking);
session_read_msg_cb,
session);
+ if (session->connect_finished)
+ session->connect_finished(session, TRUE);
return 0;
}
session->timeout_interval = interval;
if (interval > 0) {
-#if GLIB_CHECK_VERSION(2,14,0)
if (interval % 1000 == 0)
session->timeout_tag =
g_timeout_add_seconds(interval/1000, session_timeout_cb, session);
else
-#endif
- session->timeout_tag =
- g_timeout_add(interval, session_timeout_cb, session);
+ session->timeout_tag =
+ g_timeout_add(interval, session_timeout_cb, session);
} else
session->timeout_tag = 0;
}
nb_mode = sock_is_nonblocking_mode(session->sock);
session->sock->ssl_cert_auto_accept = session->ssl_cert_auto_accept;
+ session->sock->gnutls_priority = session->gnutls_priority;
if (nb_mode)
sock_set_nonblocking_mode(session->sock, FALSE);
- if (!ssl_init_socket_with_method(session->sock, SSL_METHOD_TLSv1)) {
+ if (!ssl_init_socket(session->sock)) {
g_warning("couldn't start TLS session.\n");
if (nb_mode)
sock_set_nonblocking_mode(session->sock, session->nonblocking);
session->ping_tag = -1;
if (ping_cb != NULL)
-#if GLIB_CHECK_VERSION(2,14,0)
- session->ping_tag =
- g_timeout_add_seconds(60, ping_cb, session);
-#else
- session->ping_tag =
- g_timeout_add(60*1000, ping_cb, session);
-#endif
+ session->ping_tag = g_timeout_add_seconds(60, ping_cb, session);
}