summaryrefslogtreecommitdiffstats
path: root/Lib/email/_header_value_parser.py
diff options
context:
space:
mode:
authorVinay Sajip <vinay_sajip@yahoo.co.uk>2012-05-26 19:39:27 (GMT)
committerVinay Sajip <vinay_sajip@yahoo.co.uk>2012-05-26 19:39:27 (GMT)
commitee2bbed9252fe286bc14765992877e1502b70328 (patch)
tree6d562b8297c5d7a21c52b4c3cfad6266d79ba630 /Lib/email/_header_value_parser.py
parent42211426eb9771424b9e5153d12f8c2c0c538d34 (diff)
parentd1a30c939cc6378423dd3cc22382a9abe2a7d882 (diff)
downloadcpython-ee2bbed9252fe286bc14765992877e1502b70328.zip
cpython-ee2bbed9252fe286bc14765992877e1502b70328.tar.gz
cpython-ee2bbed9252fe286bc14765992877e1502b70328.tar.bz2
Merged upstream changes.
Diffstat (limited to 'Lib/email/_header_value_parser.py')
-rw-r--r--Lib/email/_header_value_parser.py12
1 files changed, 11 insertions, 1 deletions
diff --git a/Lib/email/_header_value_parser.py b/Lib/email/_header_value_parser.py
index 87d8f68..f4a01f1 100644
--- a/Lib/email/_header_value_parser.py
+++ b/Lib/email/_header_value_parser.py
@@ -791,6 +791,8 @@ class AngleAddr(TokenList):
for x in self:
if x.token_type == 'addr-spec':
return x.addr_spec
+ else:
+ return '<>'
class ObsRoute(TokenList):
@@ -1829,6 +1831,14 @@ def get_angle_addr(value):
"expected angle-addr but found '{}'".format(value))
angle_addr.append(ValueTerminal('<', 'angle-addr-start'))
value = value[1:]
+ # Although it is not legal per RFC5322, SMTP uses '<>' in certain
+ # circumstances.
+ if value[0] == '>':
+ angle_addr.append(ValueTerminal('>', 'angle-addr-end'))
+ angle_addr.defects.append(errors.InvalidHeaderDefect(
+ "null addr-spec in angle-addr"))
+ value = value[1:]
+ return angle_addr, value
try:
token, value = get_addr_spec(value)
except errors.HeaderParseError:
@@ -1838,7 +1848,7 @@ def get_angle_addr(value):
"obsolete route specification in angle-addr"))
except errors.HeaderParseError:
raise errors.HeaderParseError(
- "expected addr-spec or but found '{}'".format(value))
+ "expected addr-spec or obs-route but found '{}'".format(value))
angle_addr.append(token)
token, value = get_addr_spec(value)
angle_addr.append(token)