• 
      

    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

    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).

    Summary ID
    Fix an e-mail regression on Python 3 due to an old Python 2.6 fix.
    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.
    c10a38051d21659bcefe88b76e715096df20edb2
    david
    1. Ship It!
    2. 
        
    chipx86
    Review request changed
    Status:
    Completed
    Change Summary:
    Pushed to release-4.0.x (fce3f52)