Mercurial > public > mercurial-scm > hg-stable
comparison tests/tinyproxy.py @ 48886:b5fe10b3c9f5 stable
py3: don?t subscript socket.error
On Python 2, socket.error was subscriptable. On Python 3, socket.error is an
alias to OSError and is not subscriptable. The except block passes the
exception to self.send_error(). This fails on both Python 2 (if it was
executed) and Python 3, as it expects a string.
Getting the attribute .strerror works on Python 2 and Python 3, and has the
same effect as the previous code on Python 2.
author | Manuel Jacob <me@manueljacob.de> |
---|---|
date | Thu, 02 Jun 2022 04:39:49 +0200 |
parents | 23f5ed6dbcb1 |
children | 127d33e63d1a |
comparison
equal
deleted
inserted
replaced
48885:fda7ec505dc5 | 48886:b5fe10b3c9f5 |
---|---|
72 else: | 72 else: |
73 host_port = netloc, 80 | 73 host_port = netloc, 80 |
74 print("\t" "connect to %s:%d" % host_port) | 74 print("\t" "connect to %s:%d" % host_port) |
75 try: | 75 try: |
76 soc.connect(host_port) | 76 soc.connect(host_port) |
77 except socket.error as arg: | 77 except socket.error as e: |
78 try: | 78 self.send_error(404, e.strerror) |
79 msg = arg[1] | |
80 except (IndexError, TypeError): | |
81 msg = arg | |
82 self.send_error(404, msg) | |
83 return 0 | 79 return 0 |
84 return 1 | 80 return 1 |
85 | 81 |
86 def do_CONNECT(self): | 82 def do_CONNECT(self): |
87 soc = socket.socket(family, socket.SOCK_STREAM) | 83 soc = socket.socket(family, socket.SOCK_STREAM) |