From 747343e09d2930ebc783f9cc657a87877e823fb8 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sat, 12 Aug 2006 14:07:01 +0300 Subject: [PATCH] Handle folder headers with colons correctly. Based on patch from Johannes Berg. --- eoc.py | 12 ++++++++++-- eocTests.py | 24 ++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/eoc.py b/eoc.py index 16dae19..52621bc 100644 --- a/eoc.py +++ b/eoc.py @@ -850,15 +850,23 @@ class MailingList: return mail headers = mail[:endpos].split("\n") body = mail[endpos:] + + headers_to_remove = [x.lower() for x in headers_to_remove] remaining = [] add_continuation_lines = 0 + for header in headers: - pos = header.find(":") - if pos == -1: + if header[0] in [' ','\t']: + # this is a continuation line if add_continuation_lines: remaining.append(header) else: + pos = header.find(":") + if pos == -1: + # malformed message, try to remove the junk + add_continuation_lines = 0 + continue name = header[:pos].lower() if name in headers_to_remove: add_continuation_lines = 0 diff --git a/eocTests.py b/eocTests.py index acf99b3..1ecbfb1 100644 --- a/eocTests.py +++ b/eocTests.py @@ -244,6 +244,30 @@ class DotDirTestCases(unittest.TestCase): mlm = eoc.MailingListManager(DOTDIR) self.dotdir_is_ok() + +class RemoveSomeHeadersTest(unittest.TestCase): + + def testRemoveSomeHeaders(self): + mlm = eoc.MailingListManager(DOTDIR) + ml = eoc.MailingList(mlm, "list@example.com") + mail = """\ +Header-1: this is a simple header +Header-2: this + is + a + complex header with a colon: yes it is +Header-3: odd numbered headers are simple + +Body. +""" + mail2 = ml.remove_some_headers(mail, ["Header-2"]) + self.failUnlessEqual(mail2, """\ +Header-1: this is a simple header +Header-3: odd numbered headers are simple + +Body. +""") + class ListBase(unittest.TestCase): def setUp(self): -- 2.30.2