Gregory Szorc <gregory.szorc@gmail.com> [Sat, 26 Jan 2019 14:00:42 -0800] rev 41433
sslutil: ensure serverhostname is bytes when formatting
It will likely be a str on Python 3.
Differential Revision: https://phab.mercurial-scm.org/D5722
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 26 Jan 2019 13:58:58 -0800] rev 41432
sslutil: use raw strings for exception reason compare
Otherwise we attempt to compare a bytes to a str on Python 3
and it always fails.
Differential Revision: https://phab.mercurial-scm.org/D5721
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 26 Jan 2019 13:40:44 -0800] rev 41431
keepalive: track ready state with a bool
This code may have been written before Python had a bool type.
Differential Revision: https://phab.mercurial-scm.org/D5719
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 26 Jan 2019 13:39:18 -0800] rev 41430
keepalive: use collections.defaultdict for host map
Cleaning up the code as part of debugging Python 3 issues.
Differential Revision: https://phab.mercurial-scm.org/D5718
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 26 Jan 2019 10:57:17 -0800] rev 41429
statichttprepo: use str to appease Python 3
The URL fed into urllib and HTTP headers need to be str on
Python 3.
Differential Revision: https://phab.mercurial-scm.org/D5716
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 26 Jan 2019 10:53:10 -0800] rev 41428
statichttprepo: use URLError.reason directly
0b3f4be5c5bf changed str(inst) to inst.reason[0] all the way back
in 2006. URLError.reason is a str and we should have taken that
attribute in its entirety. I think the code was supposed to be
inst.args[1] for compatibility with ancient Python versions.
Python 2.7 always sets .reason, so it should be safe to use
directly.
Differential Revision: https://phab.mercurial-scm.org/D5715
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 26 Jan 2019 10:40:37 -0800] rev 41427
mail: document behavior of Python 3
test-notify.t (and possibly other tests) are failing on Python 3
because email.message.Message is now aware of encodings and
attempts to roundtrip values with the specified message encoding.
Python 2 doesn't perform this roundtripping. We have tests with
non-ascii data being serialized to a message that claims to use
ascii encoding.
I /think/ Mercurial's behavior may be buggy here. But I'm not
sure.
I'm documenting the behavior so the next person who looks into
this doesn't start from scratch like I did.
Differential Revision: https://phab.mercurial-scm.org/D5714
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 26 Jan 2019 10:22:09 -0800] rev 41426
notify: be more defensive aboute None values
encoding.strtolocal is the identity function on Python 2
but an actual string manipulation routine on Python 3.
In some cases, we were passing None, which caused Python 3
to barf.
Let's change the code to react properly when the value is
None.
Differential Revision: https://phab.mercurial-scm.org/D5713