summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2021-09-30 17:04:28 +0200
committerMilan Crha <mcrha@redhat.com>2021-09-30 17:06:12 +0200
commit0b68fb1ae320ddb7625839acd8ef2eb013eacf75 (patch)
treec27aca1ef4d49830cce6a8628bbfe90055089e59
parentce519fb063b83d434c9424d4b1da866f68efa2f1 (diff)
downloadevolution-data-server-0b68fb1ae320ddb7625839acd8ef2eb013eacf75.tar.gz
I#361 - Camel: Understand non-standard "Content-Transfer-Encoding: uuencode"
The expected encoding name is "x-uuencode", but some clients generate the value as "uuencode", thus count with it too. Closes https://gitlab.gnome.org/GNOME/evolution-data-server/-/issues/361
-rw-r--r--src/camel/camel-folder-summary.c3
-rw-r--r--src/camel/camel-mime-utils.c3
2 files changed, 5 insertions, 1 deletions
diff --git a/src/camel/camel-folder-summary.c b/src/camel/camel-folder-summary.c
index 8cb6dba9f..709fa23e8 100644
--- a/src/camel/camel-folder-summary.c
+++ b/src/camel/camel-folder-summary.c
@@ -3139,7 +3139,8 @@ summary_traverse_content_with_parser (CamelFolderSummary *summary,
else
camel_mime_filter_reset (summary->priv->filter_qp);
enc_id = camel_mime_parser_filter_add (mp, summary->priv->filter_qp);
- } else if (!g_ascii_strcasecmp (encoding, "x-uuencode")) {
+ } else if (!g_ascii_strcasecmp (encoding, "x-uuencode") ||
+ !g_ascii_strcasecmp (encoding, "uuencode")) {
d (printf (" decoding x-uuencode\n"));
if (summary->priv->filter_uu == NULL)
summary->priv->filter_uu = camel_mime_filter_basic_new (CAMEL_MIME_FILTER_BASIC_UU_DEC);
diff --git a/src/camel/camel-mime-utils.c b/src/camel/camel-mime-utils.c
index 25a626d8e..761811bb1 100644
--- a/src/camel/camel-mime-utils.c
+++ b/src/camel/camel-mime-utils.c
@@ -3303,6 +3303,9 @@ camel_transfer_encoding_from_string (const gchar *string)
for (i = 0; i < G_N_ELEMENTS (encodings); i++)
if (!g_ascii_strcasecmp (string, encodings[i]))
return i;
+
+ if (!g_ascii_strcasecmp (string, "uuencode"))
+ return CAMEL_TRANSFER_ENCODING_UUENCODE;
}
return CAMEL_TRANSFER_ENCODING_DEFAULT;