aboutsummaryrefslogtreecommitdiff
path: root/src/imap.c
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-06-13 06:57:51 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-06-13 06:57:51 +0000
commit0da94eee68f536ad2320edc888c5a2a9b2f3f248 (patch)
tree547d8236c208cdb3f6618e1109739390b753031d /src/imap.c
parent2ce75a37bcca6a5c960c1fb56b530c24de5a8492 (diff)
reacquire CAPABILITY after STARTTLS since it can be changed.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@334 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src/imap.c')
-rw-r--r--src/imap.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/imap.c b/src/imap.c
index 9da5e70d..15ecc75c 100644
--- a/src/imap.c
+++ b/src/imap.c
@@ -561,8 +561,10 @@ static Session *imap_session_new(PrefsAccount *account)
SESSION(session)->destroy = imap_session_destroy;
session->authenticated = FALSE;
- session->mbox = NULL;
- session->cmd_count = 0;
+ session->capability = NULL;
+ session->uidplus = FALSE;
+ session->mbox = NULL;
+ session->cmd_count = 0;
session_list = g_list_append(session_list, session);
@@ -630,6 +632,10 @@ static gint imap_session_connect(IMAPSession *session)
}
if (!ssl_init_socket_with_method(sock, SSL_METHOD_TLSv1))
return IMAP_SOCKET;
+
+ /* capability can be changed after STARTTLS */
+ if (imap_cmd_capability(session) != IMAP_SUCCESS)
+ return IMAP_ERROR;
}
#endif
@@ -3033,8 +3039,10 @@ static gboolean imap_has_capability(IMAPSession *session,
static void imap_capability_free(IMAPSession *session)
{
- g_strfreev(session->capability);
- session->capability = NULL;
+ if (session->capability) {
+ g_strfreev(session->capability);
+ session->capability = NULL;
+ }
}
@@ -3058,7 +3066,8 @@ static gint imap_cmd_capability(IMAPSession *session)
capability += strlen("CAPABILITY ");
- IMAP_SESSION(session)->capability = g_strsplit(capability, " ", -1);
+ imap_capability_free(session);
+ session->capability = g_strsplit(capability, " ", -1);
catch:
ptr_array_free_strings(argbuf);