From: Colin Leroy Date: Thu, 20 Dec 2007 08:28:29 +0000 (+0000) Subject: 2007-12-20 [colin] 3.2.0cvs12 X-Git-Tag: rel_3_3_0~67 X-Git-Url: http://git.claws-mail.org/?p=claws.git;a=commitdiff_plain;h=9cfa17f9556e2cd38a2690c4f9b589c930a086b5 2007-12-20 [colin] 3.2.0cvs12 * src/imap.c * src/imap.h * src/prefs_account.c Add DIGEST-MD5 support for IMAP authentication --- diff --git a/ChangeLog b/ChangeLog index 0f032e116..3a4abd7e5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-12-20 [colin] 3.2.0cvs12 + + * src/imap.c + * src/imap.h + * src/prefs_account.c + Add DIGEST-MD5 support for IMAP authentication + 2007-12-19 [mones] 3.2.0cvs11 * doc/man/claws-mail.1 diff --git a/PATCHSETS b/PATCHSETS index 669902368..6ec68ddb5 100644 --- a/PATCHSETS +++ b/PATCHSETS @@ -3148,3 +3148,4 @@ ( cvs diff -u -r 1.1.4.47 -r 1.1.4.48 src/prefs_filtering_action.c; cvs diff -u -r 1.43.2.68 -r 1.43.2.69 src/prefs_matcher.c; cvs diff -u -r 1.5.2.24 -r 1.5.2.25 src/gtk/description_window.c; ) > 3.2.0cvs9.patchset ( cvs diff -u -r 1.105.2.120 -r 1.105.2.121 src/prefs_account.c; ) > 3.2.0cvs10.patchset ( cvs diff -u -r 1.1.2.4 -r 1.1.2.5 doc/man/claws-mail.1; cvs diff -u -r 1.60.2.48 -r 1.60.2.49 po/es.po; ) > 3.2.0cvs11.patchset +( cvs diff -u -r 1.179.2.204 -r 1.179.2.205 src/imap.c; cvs diff -u -r 1.34.2.19 -r 1.34.2.20 src/imap.h; cvs diff -u -r 1.105.2.121 -r 1.105.2.122 src/prefs_account.c; ) > 3.2.0cvs12.patchset diff --git a/configure.ac b/configure.ac index ed8293d71..cb84a80a3 100644 --- a/configure.ac +++ b/configure.ac @@ -11,7 +11,7 @@ MINOR_VERSION=2 MICRO_VERSION=0 INTERFACE_AGE=0 BINARY_AGE=0 -EXTRA_VERSION=11 +EXTRA_VERSION=12 EXTRA_RELEASE= EXTRA_GTK2_VERSION= diff --git a/src/imap.c b/src/imap.c index b57e5ca1d..aba9a4161 100644 --- a/src/imap.c +++ b/src/imap.c @@ -846,6 +846,9 @@ static gint imap_auth(IMAPSession *session, const gchar *user, const gchar *pass case IMAP_AUTH_CRAM_MD5: ok = imap_cmd_login(session, user, pass, "CRAM-MD5"); break; + case IMAP_AUTH_DIGEST_MD5: + ok = imap_cmd_login(session, user, pass, "DIGEST-MD5"); + break; case IMAP_AUTH_LOGIN: ok = imap_cmd_login(session, user, pass, "LOGIN"); break; @@ -856,14 +859,19 @@ static gint imap_auth(IMAPSession *session, const gchar *user, const gchar *pass debug_print("capabilities:\n" "\t ANONYMOUS %d\n" "\t CRAM-MD5 %d\n" + "\t DIGEST-MD5 %d\n" "\t LOGIN %d\n" "\t GSSAPI %d\n", imap_has_capability(session, "ANONYMOUS"), imap_has_capability(session, "CRAM-MD5"), + imap_has_capability(session, "DIGEST-MD5"), imap_has_capability(session, "LOGIN"), imap_has_capability(session, "GSSAPI")); if (imap_has_capability(session, "CRAM-MD5")) ok = imap_cmd_login(session, user, pass, "CRAM-MD5"); + if ((ok == MAILIMAP_ERROR_BAD_STATE || + ok == MAILIMAP_ERROR_LOGIN) && imap_has_capability(session, "DIGEST-MD5")) + ok = imap_cmd_login(session, user, pass, "DIGEST-MD5"); if ((ok == MAILIMAP_ERROR_BAD_STATE || ok == MAILIMAP_ERROR_LOGIN) && imap_has_capability(session, "GSSAPI")) ok = imap_cmd_login(session, user, pass, "GSSAPI"); @@ -881,6 +889,12 @@ static gint imap_auth(IMAPSession *session, const gchar *user, const gchar *pass "CRAM-MD5 SASL plugin is installed."); } + if (type == IMAP_AUTH_DIGEST_MD5) { + ext_info = _("\n\nDIGEST-MD5 logins only work if libetpan has been " + "compiled with SASL support and the " + "DIGEST-MD5 SASL plugin is installed."); + } + if (time(NULL) - last_login_err > 10) { if (!prefs_common.no_recv_err_panel) { alertpanel_error(_("Connection to %s failed: " diff --git a/src/imap.h b/src/imap.h index b06755f79..641022bb5 100644 --- a/src/imap.h +++ b/src/imap.h @@ -27,7 +27,8 @@ typedef enum IMAP_AUTH_LOGIN = 1 << 0, IMAP_AUTH_CRAM_MD5 = 1 << 1, IMAP_AUTH_ANON = 1 << 2, - IMAP_AUTH_GSSAPI = 1 << 3 + IMAP_AUTH_GSSAPI = 1 << 3, + IMAP_AUTH_DIGEST_MD5 = 1 << 4 } IMAPAuthType; FolderClass *imap_get_class (void); diff --git a/src/prefs_account.c b/src/prefs_account.c index 611ad9f24..5b088ed08 100644 --- a/src/prefs_account.c +++ b/src/prefs_account.c @@ -1484,6 +1484,7 @@ static void receive_create_widget_func(PrefsPage * _page, COMBOBOX_ADD (menu, "CRAM-MD5", IMAP_AUTH_CRAM_MD5); COMBOBOX_ADD (menu, "ANONYMOUS", IMAP_AUTH_ANON); COMBOBOX_ADD (menu, "GSSAPI", IMAP_AUTH_GSSAPI); + COMBOBOX_ADD (menu, "DIGEST-MD5", IMAP_AUTH_DIGEST_MD5); hbox1 = gtk_hbox_new (FALSE, 8); gtk_widget_show (hbox1);