dispatch: work around UnicodeDecodeError caused by SSLError of Python 2.7.9 stable
authorYuya Nishihara <yuya@tcha.org>
Thu, 26 Feb 2015 23:30:33 +0900
branchstable
changeset 24152 97a548aeb749
parent 24151 38824c53c2f1
child 24153 f7401f816cc9
dispatch: work around UnicodeDecodeError caused by SSLError of Python 2.7.9 SSLError of Python 2.7.9 may keep error message in unicode. It will be wrapped by URLError(reason) at KeepAliveHandler.do_open, so inst.reason can be a unicode. https://hg.python.org/cpython/file/v2.7.9/Modules/_ssl.c#l329
mercurial/dispatch.py
--- a/mercurial/dispatch.py	Thu Feb 05 14:45:49 2015 +0900
+++ b/mercurial/dispatch.py	Thu Feb 26 23:30:33 2015 +0900
@@ -230,6 +230,9 @@
             except (AttributeError, IndexError):
                 # it might be anything, for example a string
                 reason = inst.reason
+            if isinstance(reason, unicode):
+                # SSLError of Python 2.7.9 contains a unicode
+                reason = reason.encode(encoding.encoding, 'replace')
             ui.warn(_("abort: error: %s\n") % reason)
         elif (util.safehasattr(inst, "args")
               and inst.args and inst.args[0] == errno.EPIPE):