#include "codeconv.h"
#include "utils.h"
#include "inputdialog.h"
+#include "ssl.h"
#define IMAP4_PORT 143
+#if USE_SSL
+#define IMAPS_PORT 993
+#endif
static GList *session_list = NULL;
guint32 last_uid);
static void imap_delete_all_cached_messages (FolderItem *item);
+#if !USE_SSL
static SockInfo *imap_open (const gchar *server,
gushort port,
gchar *buf);
+#else
+static SockInfo *imap_open (const gchar *server,
+ gushort port,
+ gchar *buf,
+ gboolean use_ssl);
+#endif
static gint imap_set_message_flags (IMAPSession *session,
guint32 first_uid,
g_return_val_if_fail(folder->type == F_IMAP, NULL);
g_return_val_if_fail(folder->account != NULL, NULL);
+#if !USE_SSL
port = folder->account->set_imapport ? folder->account->imapport
: IMAP4_PORT;
+#else
+ port = folder->account->set_imapport ? folder->account->imapport
+ : (folder->account->imap_ssl ? IMAPS_PORT : IMAP4_PORT);
+#endif
if (!rfolder->session) {
rfolder->session =
+#if !USE_SSL
imap_session_new(folder->account->recv_server, port,
folder->account->userid,
folder->account->passwd);
+#else
+ imap_session_new(folder->account->recv_server, port,
+ folder->account->userid,
+ folder->account->passwd,
+ folder->account->imap_ssl);
+#endif
if (rfolder->session)
imap_parse_namespace(IMAP_SESSION(rfolder->session),
IMAP_FOLDER(folder));
folder->account->recv_server, port);
session_destroy(rfolder->session);
rfolder->session =
+#if !USE_SSL
imap_session_new(folder->account->recv_server, port,
folder->account->userid,
folder->account->passwd);
+#else
+ imap_session_new(folder->account->recv_server, port,
+ folder->account->userid,
+ folder->account->passwd,
+ folder->account->imap_ssl);
+#endif
if (rfolder->session)
imap_parse_namespace(IMAP_SESSION(rfolder->session),
IMAP_FOLDER(folder));
return pass;
}
+#if !USE_SSL
Session *imap_session_new(const gchar *server, gushort port,
const gchar *user, const gchar *pass)
+#else
+Session *imap_session_new(const gchar *server, gushort port,
+ const gchar *user, const gchar *pass,
+ gboolean use_ssl)
+#endif
{
gchar buf[IMAPBUFSIZE];
IMAPSession *session;
log_message(_("creating IMAP4 connection to %s:%d ...\n"),
server, port);
+#if !USE_SSL
if ((imap_sock = imap_open(server, port, buf)) == NULL)
+#else
+ if ((imap_sock = imap_open(server, port, buf, use_ssl)) == NULL)
+#endif
return NULL;
if (imap_cmd_login(imap_sock, user, pass) != IMAP_SUCCESS) {
imap_cmd_logout(imap_sock);
void imap_session_destroy(IMAPSession *session)
{
+#if USE_SSL
+ ssl_done_socket(SESSION(session)->sock);
+#endif
sock_close(SESSION(session)->sock);
SESSION(session)->sock = NULL;
debug_print(_("done.\n"));
}
+#if !USE_SSL
static SockInfo *imap_open(const gchar *server, gushort port, gchar *buf)
+#else
+static SockInfo *imap_open(const gchar *server, gushort port, gchar *buf, gboolean use_ssl)
+#endif
{
SockInfo *sock;
return NULL;
}
+#if USE_SSL
+ if(use_ssl && !ssl_init_socket(sock)) {
+ sock_close(sock);
+ return NULL;
+ }
+#endif
+
imap_cmd_count = 0;
if (imap_cmd_noop(sock) != IMAP_SUCCESS) {