2007-12-20 [colin] 3.2.0cvs12
authorColin Leroy <colin@colino.net>
Thu, 20 Dec 2007 08:28:29 +0000 (08:28 +0000)
committerColin Leroy <colin@colino.net>
Thu, 20 Dec 2007 08:28:29 +0000 (08:28 +0000)
* src/imap.c
* src/imap.h
* src/prefs_account.c
Add DIGEST-MD5 support for IMAP authentication

ChangeLog
PATCHSETS
configure.ac
src/imap.c
src/imap.h
src/prefs_account.c

index 0f032e116053eab60760cb4a36fe3202a26ea457..3a4abd7e53b13ce24871c8e4c692a6e835bc64a1 100644 (file)
--- 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
index 669902368555b64e90fe52d83df9f2eb93ddd80d..6ec68ddb588d5481cf12682e582c51ca4d1de743 100644 (file)
--- a/PATCHSETS
+++ b/PATCHSETS
 ( 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
index ed8293d71ccdc3d891a358bcf11686fc6c790f8b..cb84a80a3c0d57a3866d80fd2eea93cdfba0723e 100644 (file)
@@ -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=
 
index b57e5ca1dab85ccce3ce379fbd962c54527265e2..aba9a416119879028a0ceda324ab97733dd798dc 100644 (file)
@@ -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: "
index b06755f79ed862cf62ad6b2be974e14f0b7fcbfb..641022bb53c3ea8fcdbed14f5f1201f1d9bb95f9 100644 (file)
@@ -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);
index 611ad9f24f51f4cc3e609cf56202060be043e4f3..5b088ed08f4c61f02437b8b46aaa023757e353f2 100644 (file)
@@ -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);