diff options
author | R David Murray <rdmurray@bitdance.com> | 2012-05-29 13:14:44 (GMT) |
---|---|---|
committer | R David Murray <rdmurray@bitdance.com> | 2012-05-29 13:14:44 (GMT) |
commit | abfc37491cecb0a052d54c3bf0525ac140e94f7e (patch) | |
tree | 90ffe814aff0fd3f921e29e619582236f6f3ebe5 /Lib/email/message.py | |
parent | 6066fe1258d7d8dcec7459267f159d5d73d920e2 (diff) | |
download | cpython-abfc37491cecb0a052d54c3bf0525ac140e94f7e.zip cpython-abfc37491cecb0a052d54c3bf0525ac140e94f7e.tar.gz cpython-abfc37491cecb0a052d54c3bf0525ac140e94f7e.tar.bz2 |
#10839: raise an error on add of duplicate unique headers in new email policies
This feature was supposed to be part of the initial email6 checkin, but it got
lost in my big refactoring.
In this patch I'm not providing an easy way to turn off the errors, but they
only happen when a header is added programmatically, and it is almost never
the right thing to do to allow the duplicate to be added. An application that
needs to add duplicates of unique headers can create a policy subclass to
allow it.
Diffstat (limited to 'Lib/email/message.py')
-rw-r--r-- | Lib/email/message.py | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/Lib/email/message.py b/Lib/email/message.py index 62b82b7..9b06207 100644 --- a/Lib/email/message.py +++ b/Lib/email/message.py @@ -346,6 +346,16 @@ class Message: Note: this does not overwrite an existing header with the same field name. Use __delitem__() first to delete any existing headers. """ + max_count = self.policy.header_max_count(name) + if max_count: + lname = name.lower() + found = 0 + for k, v in self._headers: + if k.lower() == lname: + found += 1 + if found >= max_count: + raise ValueError("There may be at most {} {} headers " + "in a message".format(max_count, name)) self._headers.append(self.policy.header_store_parse(name, val)) def __delitem__(self, name): |