typedef struct _IMAPNameSpace IMAPNameSpace;
typedef struct _IMAPFolderItem IMAPFolderItem;
-#include "prefs_account.h"
-
#define IMAP_FOLDER(obj) ((IMAPFolder *)obj)
#define IMAP_FOLDER_ITEM(obj) ((IMAPFolderItem *)obj)
#define IMAP_SESSION(obj) ((IMAPSession *)obj)
FolderItem *item,
MsgInfoList *msglist,
GHashTable *msgflags);
-static gchar *imap_folder_get_path (Folder *folder);
static gchar *imap_item_get_path (Folder *folder,
FolderItem *item);
static MsgInfo *imap_parse_msg(const gchar *file, FolderItem *item);
if (imap_class.idstr == NULL) {
imap_class.type = F_IMAP;
imap_class.idstr = "imap";
- imap_class.uistr = "IMAP4";
+ imap_class.uistr = "IMAP";
imap_class.supports_server_search = TRUE;
/* Folder functions */
imap_class.synchronise = imap_synchronise;
imap_class.remove_cached_msg = imap_remove_cached_msg;
imap_class.commit_tags = imap_commit_tags;
-#ifdef USE_PTREAD
- pthread_mutex_init(&imap_mutex, NULL);
-#endif
}
return &imap_class;
if (rfolder == NULL)
return;
- log_warning(LOG_PROTOCOL, _("IMAP4 connection broken\n"));
+ log_warning(LOG_PROTOCOL, _("IMAP connection broken\n"));
SESSION(session)->state = SESSION_DISCONNECTED;
SESSION(session)->sock = NULL;
}
break;
#ifdef USE_GNUTLS
case MAILIMAP_ERROR_SSL:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("SSL error"), "\n", NULL), session_server);
+ log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("SSL/TLS error"), "\n", NULL), session_server);
break;
#endif
default:
session = NULL;
} else {
rfolder->session = NULL;
- log_warning(LOG_PROTOCOL, _("IMAP4 connection to %s has been"
+ log_warning(LOG_PROTOCOL, _("IMAP connection to %s has been"
" disconnected. Reconnecting...\n"),
folder->account->recv_server);
- statusbar_print_all(_("IMAP4 connection to %s has been"
+ statusbar_print_all(_("IMAP connection to %s has been"
" disconnected. Reconnecting...\n"),
folder->account->recv_server);
SESSION(session)->state = SESSION_DISCONNECTED;
if (account->ssl_imap != SSL_NONE) {
if (alertpanel_full(_("Insecure connection"),
_("This connection is configured to be secured "
- "using SSL, but SSL is not available in this "
- "build of Claws Mail. \n\n"
+ "using SSL/TLS, but SSL/TLS is not available "
+ "in this build of Claws Mail. \n\n"
"Do you want to continue connecting to this "
"server? The communication would not be "
"secure."),
#endif
imap_init(folder);
- buf = g_strdup_printf(_("Account '%s': Connecting to IMAP4 server: %s:%d..."),
+ buf = g_strdup_printf(_("Account '%s': Connecting to IMAP server: %s:%d..."),
folder->account->account_name, folder->account->recv_server,
port);
statuswindow_print_all("%s", buf);
else {
#ifdef USE_GNUTLS
if (r == MAILIMAP_ERROR_SSL)
- log_error(LOG_PROTOCOL, _("SSL handshake failed\n"));
+ log_error(LOG_PROTOCOL, _("SSL/TLS handshake failed\n"));
else
#endif
imap_handle_error(NULL, account->recv_server, r);
if(!prefs_common.no_recv_err_panel) {
- alertpanel_error_log(_("Can't connect to IMAP4 server: %s:%d"),
+ alertpanel_error_log(_("Can't connect to IMAP server: %s:%d"),
account->recv_server, port);
} else {
- log_error(LOG_PROTOCOL, _("Can't connect to IMAP4 server: %s:%d\n"),
+ log_error(LOG_PROTOCOL, _("Can't connect to IMAP server: %s:%d\n"),
account->recv_server, port);
}
ok = imap_cmd_starttls(session);
if (ok != MAILIMAP_NO_ERROR) {
- log_warning(LOG_PROTOCOL, _("Can't start TLS session.\n"));
+ log_warning(LOG_PROTOCOL, _("Can't start STARTTLS session.\n"));
if (!is_fatal(ok)) {
SESSION(session)->sock = NULL;
imap_safe_destroy(session);
static gint imap_session_authenticate(IMAPSession *session,
PrefsAccount *account)
{
- gchar *pass, *acc_pass;
+ gchar *pass, *acc_pass = NULL;
gboolean failed = FALSE;
gint ok = MAILIMAP_NO_ERROR;
g_return_val_if_fail(account->userid != NULL, MAILIMAP_ERROR_BAD_STATE);
- if (password_get(account->userid, account->recv_server, "imap",
- SESSION(session)->port, &pass)) {
- Xstrdup_a(acc_pass, pass, {g_free(pass); return MAILIMAP_NO_ERROR;});
- g_free(pass);
- } else {
+ if (!password_get(account->userid, account->recv_server, "imap",
+ SESSION(session)->port, &acc_pass)) {
acc_pass = passwd_store_get_account(account->account_id,
PWS_ACCOUNT_RECV);
}
+
try_again:
pass = acc_pass;
if (!pass && account->imap_auth_type != IMAP_AUTH_ANON && account->imap_auth_type != IMAP_AUTH_GSSAPI) {
}
if (acc_pass != NULL) {
- g_free(acc_pass);
memset(acc_pass, 0, strlen(acc_pass));
+ g_free(acc_pass);
+ acc_pass = NULL;
}
return ok;
return new_item;
}
-static gchar *imap_folder_get_path(Folder *folder)
-{
- gchar *folder_path;
-
- g_return_val_if_fail(folder != NULL, NULL);
- g_return_val_if_fail(folder->account != NULL, NULL);
-
-#ifdef G_OS_WIN32
- gchar *sanitized_dirname = g_strdup(folder->account->recv_server);
- g_strdelimit(sanitized_dirname, ":", ',');
-#endif
-
- folder_path = g_strconcat(get_imap_cache_dir(),
- G_DIR_SEPARATOR_S,
-#ifdef G_OS_WIN32
- sanitized_dirname,
-#else
- folder->account->recv_server,
-#endif
- G_DIR_SEPARATOR_S,
- folder->account->userid,
- NULL);
-
-#ifdef G_OS_WIN32
- g_free(sanitized_dirname);
-#endif
- return folder_path;
-}
-
#ifdef G_OS_WIN32
static gchar *imap_encode_unsafe_chars(const gchar *str)
{
gchar *item_path = NULL;
g_return_val_if_fail(folder != NULL, NULL);
+ g_return_val_if_fail(folder->account != NULL, NULL);
g_return_val_if_fail(item != NULL, NULL);
- folder_path = imap_folder_get_path(folder);
+ folder_path = prefs_account_cache_dir(folder->account, FALSE);
g_return_val_if_fail(folder_path != NULL, NULL);
gint ok = MAILIMAP_ERROR_BAD_STATE;
if (imap_has_capability(session, "STARTTLS")) {
#ifdef USE_GNUTLS
- log_warning(LOG_PROTOCOL, _("Server requires TLS to log in.\n"));
+ log_warning(LOG_PROTOCOL, _("Server requires STARTTLS to log in.\n"));
ok = imap_cmd_starttls(session);
if (ok != MAILIMAP_NO_ERROR) {
- log_warning(LOG_PROTOCOL, _("Can't start TLS session.\n"));
+ log_warning(LOG_PROTOCOL, _("Can't start STARTTLS session.\n"));
return ok;
} else {
/* refresh capas */
}
#else
log_error(LOG_PROTOCOL, _("Connection to %s failed: "
- "server requires TLS, but Claws Mail "
- "has been compiled without TLS "
+ "server requires STARTTLS, but Claws Mail "
+ "has been compiled without STARTTLS "
"support.\n"),
SESSION(session)->server);
return MAILIMAP_ERROR_LOGIN;
}
}
- log_print(LOG_PROTOCOL, "IMAP4> Logging %s to %s using %s\n",
+ log_print(LOG_PROTOCOL, "IMAP> Logging %s to %s using %s\n",
user,
SESSION(session)->server,
type);
r = imap_threaded_login(session->folder, user, pass, type);
if (r != MAILIMAP_NO_ERROR) {
imap_handle_error(SESSION(session), NULL, r);
- log_print(LOG_PROTOCOL, "IMAP4< Error logging in to %s\n",
+ log_print(LOG_PROTOCOL, "IMAP< Error logging in to %s\n",
SESSION(session)->server);
ok = r;
} else {
- log_print(LOG_PROTOCOL, "IMAP4< Login to %s successful\n",
+ log_print(LOG_PROTOCOL, "IMAP< Login to %s successful\n",
SESSION(session)->server);
ok = MAILIMAP_NO_ERROR;
}
SESSION(session)->server, SESSION(session)->port);
if (r != MAILIMAP_NO_ERROR) {
imap_handle_error(SESSION(session), NULL, r);
- debug_print("starttls err %d\n", r);
+ debug_print("STARTTLS err %d\n", r);
return r;
}
return MAILIMAP_NO_ERROR;
if (imap_class.idstr == NULL) {
imap_class.type = F_IMAP;
imap_class.idstr = "imap";
- imap_class.uistr = "IMAP4";
+ imap_class.uistr = "IMAP";
imap_class.new_folder = imap_folder_new;
imap_class.create_tree = imap_create_tree;