summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul J Stevens <paul@nfg.nl>2009-09-24 13:46:46 +0200
committerPaul J Stevens <paul@nfg.nl>2009-09-24 13:46:46 +0200
commit9325898adbae53fa41b735f836838b98ebcca2d7 (patch)
treede37cbdcb6cb65f55c0c7475cc525e419cf25809
parentf058991d47e0089191d7339c05a5bd4d10498716 (diff)
additional fix for bug #800
also add unit-tests to prove it.
-rw-r--r--src/dbmail-message.c7
-rw-r--r--test/check_dbmail.h72
-rw-r--r--test/check_dbmail_message.c7
3 files changed, 83 insertions, 3 deletions
diff --git a/src/dbmail-message.c b/src/dbmail-message.c
index 2f4e6997..24338463 100644
--- a/src/dbmail-message.c
+++ b/src/dbmail-message.c
@@ -510,9 +510,10 @@ static gboolean store_mime_message(GMimeObject * object, DbmailMessage *m, gbool
m2 = g_mime_message_part_get_message(GMIME_MESSAGE_PART(object));
- g_return_val_if_fail(GMIME_IS_MESSAGE(m2), FALSE);
-
- r = store_mime_object(GMIME_OBJECT(m2), m);
+ if (GMIME_IS_MESSAGE(m2))
+ r = store_mime_object(GMIME_OBJECT(m2), m);
+ else // fall-back
+ r = store_mime_text(object, m, TRUE);
g_object_unref(m2);
diff --git a/test/check_dbmail.h b/test/check_dbmail.h
index 0a1f9a8b..177160c7 100644
--- a/test/check_dbmail.h
+++ b/test/check_dbmail.h
@@ -307,6 +307,78 @@ char *multipart_message4 = "To: testuser1@localhost\n"
"\n"
"--boundary-1138-29572-2659438-28175--\n";
+char *multipart_message5 = "From: Foo Bar - Bar <foo@bar.pt>\n"
+ "To: 'Foo Bar' <mysql.foo@bar.pt>\n"
+ "In-Reply-To: <!&!AAAAAAAAAAAYAAAAAAAAAA3ScfcmmrxBsE5VPk3ijVDigQAAEAAAAP11KL4JHZZCt+WUIq6vNDQBAAAAAA==@bar.pt>\n"
+ "Subject: Read:\n"
+ "Date: Thu, 24 Sep 2009 10:33:43 +0100\n"
+ "Message-ID: <007f01ca3cfa$1b85bb00$52913100$@pt>\n"
+ "X-Mailer: Microsoft Office Outlook 12.0\n"
+ "Thread-Index: Aco8+gd9K2CEZpjaRMmMbFE8KVlvsQAAAuyC\n"
+ "X-Virus-Scanned: ClamAV using ClamSMTP\n"
+ "Return-Path: foo@bar.pt\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: multipart/report; report-type=disposition-notification;\n"
+ " boundary=\"----=_NextPart_000_0080_01CA3D02.7D4A2300\"\n"
+ "\n"
+ "This is a multipart message in MIME format.\n"
+ "\n"
+ "------=_NextPart_000_0080_01CA3D02.7D4A2300\n"
+ "Content-Type: multipart/alternative;\n"
+ " boundary=\"----=_NextPart_001_0081_01CA3D02.7D4A2300\"\n"
+ "\n"
+ "\n"
+ "------=_NextPart_001_0081_01CA3D02.7D4A2300\n"
+ "Content-Type: text/plain;\n"
+ " charset=\"iso-8859-1\"\n"
+ "Content-Transfer-Encoding: 7bit\n"
+ "\n"
+ "Your message\n"
+ "\n"
+ " To: Foo Bar\n"
+ " Sent: 24-09-2009 10:33\n"
+ "\n"
+ "was read on 24-09-2009 10:33.\n"
+ "\n"
+ "------=_NextPart_001_0081_01CA3D02.7D4A2300\n"
+ "Content-Type: text/html;\n"
+ " charset=\"iso-8859-1\"\n"
+ "Content-Transfer-Encoding: quoted-printable\n"
+ "\n"
+ "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2//EN\">\n"
+ "<HTML>\n"
+ "<HEAD>\n"
+ "<META HTTP-EQUIV=3D\"Content-Type\" CONTENT=3D\"text/html; =\n"
+ "charset=3DWindows-1252\">\n"
+ "<META NAME=3D\"Generator\" CONTENT=3D\"MS Exchange Server version =\n"
+ "08.00.0681.000\">\n"
+ "<TITLE>Read: </TITLE>\n"
+ "</HEAD>\n"
+ "<BODY>\n"
+ "<!-- Converted from text/plain format -->\n"
+ "\n"
+ "<P><FONT SIZE=3D2>Your message<BR>\n"
+ "<BR>\n"
+ "&nbsp;&nbsp;&nbsp; To:&nbsp; Foo Bar<BR>\n"
+ "&nbsp;&nbsp;&nbsp; Sent:&nbsp; 24-09-2009 10:33<BR>\n"
+ "<BR>\n"
+ "was read on 24-09-2009 10:33.</FONT>\n"
+ "</P>\n"
+ "\n"
+ "</BODY>\n"
+ "</HTML>\n"
+ "------=_NextPart_001_0081_01CA3D02.7D4A2300--\n"
+ "\n"
+ "------=_NextPart_000_0080_01CA3D02.7D4A2300\n"
+ "Content-Type: message/disposition-notification\n"
+ "Content-Transfer-Encoding: 7bit\n"
+ "\n"
+ "Reporting-UA: bar.pt; Microsoft Office Outlook 12.0\n"
+ "Final-Recipient: rfc822;foo@bar.pt\n"
+ "Original-Message-ID: <!&!AAAAAAAAAAAYAAAAAAAAAA3ScfcmmrxBsE5VPk3ijVDigQAAEAAAAP11KL4JHZZCt+WUIq6vNDQBAAAAAA==@bar.pt>\n"
+ "Disposition: manual-action/MDN-sent-manually; displayed\n"
+ "\n"
+ "------=_NextPart_000_0080_01CA3D02.7D4A2300--\n";
char *multipart_alternative = "From paul@nfg.nl Tue Oct 11 13:06:24 2005\n"
"Message-ID: <43E5FE98.4030609@nfg.nl>\n"
diff --git a/test/check_dbmail_message.c b/test/check_dbmail_message.c
index 5c765748..5be8fbad 100644
--- a/test/check_dbmail_message.c
+++ b/test/check_dbmail_message.c
@@ -218,6 +218,13 @@ START_TEST(test_dbmail_message_store)
g_free(e);
g_free(t);
//-----------------------------------------
+ m = message_init(multipart_message5);
+ e = dbmail_message_to_string(m);
+ t = store_and_retrieve(m);
+ COMPARE(e,t);
+ g_free(e);
+ g_free(t);
+ //-----------------------------------------
m = message_init(multipart_mixed);
e = dbmail_message_to_string(m);
t = store_and_retrieve(m);