SF bug #1347874; FeedParser does not comply with RFC2822.
Change headerRE as suggested in the bug report, so that single character headers are accepted. Test case added too. Will backport to Python 2.4.
This commit is contained in:
parent
20bad74d63
commit
6153201274
|
@ -1,4 +1,4 @@
|
||||||
# Copyright (C) 2004 Python Software Foundation
|
# Copyright (C) 2004-2006 Python Software Foundation
|
||||||
# Authors: Baxter, Wouters and Warsaw
|
# Authors: Baxter, Wouters and Warsaw
|
||||||
# Contact: email-sig@python.org
|
# Contact: email-sig@python.org
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ NLCRE_eol = re.compile('(\r\n|\r|\n)$')
|
||||||
NLCRE_crack = re.compile('(\r\n|\r|\n)')
|
NLCRE_crack = re.compile('(\r\n|\r|\n)')
|
||||||
# RFC 2822 $3.6.8 Optional fields. ftext is %d33-57 / %d59-126, Any character
|
# RFC 2822 $3.6.8 Optional fields. ftext is %d33-57 / %d59-126, Any character
|
||||||
# except controls, SP, and ":".
|
# except controls, SP, and ":".
|
||||||
headerRE = re.compile(r'^(From |[\041-\071\073-\176]{2,}:|[\t ])')
|
headerRE = re.compile(r'^(From |[\041-\071\073-\176]{1,}:|[\t ])')
|
||||||
EMPTYSTRING = ''
|
EMPTYSTRING = ''
|
||||||
NL = '\n'
|
NL = '\n'
|
||||||
|
|
||||||
|
|
|
@ -2467,6 +2467,15 @@ Here's the message body
|
||||||
msg = email.message_from_string(m)
|
msg = email.message_from_string(m)
|
||||||
eq(len(msg.keys()), 0)
|
eq(len(msg.keys()), 0)
|
||||||
|
|
||||||
|
def test_rfc2822_one_character_header(self):
|
||||||
|
eq = self.assertEqual
|
||||||
|
m = 'A: first header\nB: second header\nCC: third header\n\nbody'
|
||||||
|
msg = email.message_from_string(m)
|
||||||
|
headers = msg.keys()
|
||||||
|
headers.sort()
|
||||||
|
eq(headers, ['A', 'B', 'CC'])
|
||||||
|
eq(msg.get_payload(), 'body')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TestBase64(unittest.TestCase):
|
class TestBase64(unittest.TestCase):
|
||||||
|
|
Loading…
Reference in New Issue