summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@iki.fi>2006-08-12 14:07:01 +0300
committerLars Wirzenius <liw@iki.fi>2006-08-12 14:07:01 +0300
commit747343e09d2930ebc783f9cc657a87877e823fb8 (patch)
tree5e4766962aa5e5eafb2e6b2f24d7531ade328e99
parentd7274d7ec9adf3186386a740572615660016f2ea (diff)
downloadeoc-747343e09d2930ebc783f9cc657a87877e823fb8.tar.gz
Handle folder headers with colons correctly. Based on patch from Johannes Berg.
-rw-r--r--eoc.py12
-rw-r--r--eocTests.py24
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):