提交 a5ba696e 编写于 作者: A Andy McCurdy

version 3.3.5, handle socket.timeout errors correctly in Python 2.7

Fix an issue where socket.timeout errors could be handled by the wrong
exception handler in Python 2.7.
上级 3afa0160
* 3.3.5
* Fix an issue where socket.timeout errors could be handled by the wrong
exception handler in Python 2.7.
* 3.3.4
* More specifically identify nonblocking read errors for both SSL and
non-SSL connections. 3.3.1, 3.3.2 and 3.3.3 on Python 2.7 could
......
......@@ -29,7 +29,7 @@ def int_or_str(value):
return value
__version__ = '3.3.4'
__version__ = '3.3.5'
VERSION = tuple(map(int_or_str, __version__.split('.')))
__all__ = [
......
......@@ -187,14 +187,10 @@ class SocketBuffer(object):
# blocking error, simply return False indicating that
# there's no data to be read. otherwise raise the
# original exception.
allowed_errno = NONBLOCKING_EXCEPTION_ERROR_NUMBERS[ex.__class__]
if raise_on_timeout or ex.errno != allowed_errno:
raise
return False
except socket.timeout:
if raise_on_timeout:
raise
return False
allowed = NONBLOCKING_EXCEPTION_ERROR_NUMBERS.get(ex.__class__, -1)
if not raise_on_timeout and ex.errno == allowed:
return False
raise
finally:
if custom_timeout:
sock.settimeout(self.socket_timeout)
......@@ -417,14 +413,10 @@ class HiredisParser(BaseParser):
# blocking error, simply return False indicating that
# there's no data to be read. otherwise raise the
# original exception.
allowed_errno = NONBLOCKING_EXCEPTION_ERROR_NUMBERS[ex.__class__]
if raise_on_timeout or ex.errno != allowed_errno:
raise
return False
except socket.timeout:
if not raise_on_timeout:
raise
return False
allowed = NONBLOCKING_EXCEPTION_ERROR_NUMBERS.get(ex.__class__, -1)
if not raise_on_timeout and ex.errno == allowed:
return False
raise
finally:
if custom_timeout:
sock.settimeout(self._socket_timeout)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册