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;
}
gint (*recv_msg) (Session *session,
const gchar *msg);
+ void (*connect_finished) (Session *session,
+ gboolean success);
gint (*send_data_finished) (Session *session,
guint len);
gint (*recv_data_finished) (Session *session,