summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES3
-rw-r--r--redis/__init__.py2
-rwxr-xr-xredis/connection.py24
3 files changed, 12 insertions, 17 deletions
diff --git a/CHANGES b/CHANGES
index 7b53f9c..fd58905 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+* 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
diff --git a/redis/__init__.py b/redis/__init__.py
index 71bc217..66ef979 100644
--- a/redis/__init__.py
+++ b/redis/__init__.py
@@ -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__ = [
diff --git a/redis/connection.py b/redis/connection.py
index 28b579e..151d4d0 100755
--- a/redis/connection.py
+++ b/redis/connection.py
@@ -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)