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)