Fix an e-mail regression on Python 3 due to an old Python 2.6 fix.

Review Request #11671 — Created June 23, 2021 and submitted — Latest diff uploaded

Information

Review Board
release-4.0.x

Reviewers

Back in Python 2.6 timeframe, e-mail multi-line headers used a
continuation character of \t for subsequent lines, which was
problematic on some e-mail clients. Python 2.7 changed this to a space
character (https://bugs.python.org/issue1974).

Since this impacted our users
(https://hellosplat.com/s/beanbag/tickets/3613/), we monkey-patched the
continuation character for Python 2.6 installs.

Unfortunately, this later broke Python 3, as the character was a byte
string, and Python 3 expected to be dealing with Unicode strings. It
wasn't really a problem unless the subsequent lines contained Unicode
characters, which would trip a particular code path in the
email.header.

We no longer support Python 2.6, and have no reason to maintain this
fix, as our injected character has been the default for a long time.
This removes that code entirely, fixing this issue and delegating purely
to Python e-mail code.

Generated some e-mails with long headers that contained Unicode, and
verified the issue along with the fix.

Unit tests were not added, as they'd just be testing the default
behavior/absense of our monkey-patched code, and aren't particularly
useful for any future regression testing (since we're not in charge
of Python's email module).

Commits

Files