diff options
author | Paul J Stevens <paul@nfg.nl> | 2009-09-24 13:46:46 +0200 |
---|---|---|
committer | Paul J Stevens <paul@nfg.nl> | 2009-09-24 13:46:46 +0200 |
commit | 9325898adbae53fa41b735f836838b98ebcca2d7 (patch) | |
tree | de37cbdcb6cb65f55c0c7475cc525e419cf25809 | |
parent | f058991d47e0089191d7339c05a5bd4d10498716 (diff) |
additional fix for bug #800
also add unit-tests to prove it.
-rw-r--r-- | src/dbmail-message.c | 7 | ||||
-rw-r--r-- | test/check_dbmail.h | 72 | ||||
-rw-r--r-- | test/check_dbmail_message.c | 7 |
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" + " To: Foo Bar<BR>\n" + " Sent: 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); |