summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Woodhouse <David.Woodhouse@intel.com>2010-06-19 12:41:11 +0100
committerDavid Woodhouse <David.Woodhouse@intel.com>2010-06-28 13:29:45 +0100
commit8d504b79544970ed356e4f0117d614ed6347a3e2 (patch)
tree4e06abf7cc97f02928bd00d30e20a7d24cdf6c47
parent176295453fca187e36538c7f77a5ca63d3109c05 (diff)
downloadevolution-data-server-8d504b79544970ed356e4f0117d614ed6347a3e2.tar.gz
Support VANISHED response (RFC5162)
(cherry picked from commit 425190c799760d87e2c6ca8f93ef1d73a9543f55)
-rw-r--r--camel/providers/imapx/camel-imapx-server.c14
-rw-r--r--camel/providers/imapx/camel-imapx-tokens.txt1
-rw-r--r--camel/providers/imapx/camel-imapx-utils.h1
3 files changed, 16 insertions, 0 deletions
diff --git a/camel/providers/imapx/camel-imapx-server.c b/camel/providers/imapx/camel-imapx-server.c
index 68e8d84b0..252016733 100644
--- a/camel/providers/imapx/camel-imapx-server.c
+++ b/camel/providers/imapx/camel-imapx-server.c
@@ -1174,6 +1174,20 @@ imapx_untagged(CamelIMAPXServer *imap, CamelException *ex)
break;
}
+ case IMAPX_VANISHED: {
+ GPtrArray *uids = imapx_parse_uids(imap->stream, ex);
+ int i;
+
+ if (camel_exception_is_set(ex))
+ return -1;
+ for (i = 0; i < uids->len; i++) {
+ gchar *uid = g_strdup_printf("%u", GPOINTER_TO_UINT(g_ptr_array_index (uids, i)));
+ c(printf("vanished: %s\n", uid));
+ imapx_expunge_uid_from_summary(imap, uid);
+ }
+ g_ptr_array_free (uids, FALSE);
+ break;
+ }
case IMAPX_NAMESPACE: {
CamelIMAPXNamespaceList *nsl = NULL;
diff --git a/camel/providers/imapx/camel-imapx-tokens.txt b/camel/providers/imapx/camel-imapx-tokens.txt
index be863acef..d1d36381c 100644
--- a/camel/providers/imapx/camel-imapx-tokens.txt
+++ b/camel/providers/imapx/camel-imapx-tokens.txt
@@ -39,3 +39,4 @@ UID, IMAPX_UID
UIDVALIDITY, IMAPX_UIDVALIDITY
UNSEEN, IMAPX_UNSEEN
UIDNEXT, IMAPX_UIDNEXT
+VANISHED, IMAPX_VANISHED
diff --git a/camel/providers/imapx/camel-imapx-utils.h b/camel/providers/imapx/camel-imapx-utils.h
index 6215afaf5..a65255333 100644
--- a/camel/providers/imapx/camel-imapx-utils.h
+++ b/camel/providers/imapx/camel-imapx-utils.h
@@ -49,6 +49,7 @@ typedef enum _camel_imapx_id_t {
IMAPX_UIDVALIDITY,
IMAPX_UNSEEN,
IMAPX_UIDNEXT,
+ IMAPX_VANISHED,
} camel_imapx_id_t;
/* str MUST be in upper case, tokenised using gperf function */