summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIonel Cristian Mărieș <contact@ionelmc.ro>2014-02-08 18:25:29 +0200
committerIonel Cristian Mărieș <contact@ionelmc.ro>2014-02-08 18:25:29 +0200
commit464f6daa789b131afca843c66aa1657bc8ce8621 (patch)
treee59d27de53c9660abc6f6d064b9a8eca861419af
parent4284b1948a3e8d24a409efc7fd8417973e5f1ec9 (diff)
downloadpy-amqp-fix-celery-1847.tar.gz
Don't read from the socket more than requested. This prevents stalling issues (fixes celery/celery#1847).fix-celery-1847
-rw-r--r--amqp/transport.py5
1 files changed, 2 insertions, 3 deletions
diff --git a/amqp/transport.py b/amqp/transport.py
index e24a72a..30765c9 100644
--- a/amqp/transport.py
+++ b/amqp/transport.py
@@ -207,7 +207,7 @@ class SSLTransport(_AbstractTransport):
try:
while len(rbuf) < n:
try:
- s = recv(131072) # see note above
+ s = recv(n - len(rbuf)) # see note above
except socket.error as exc:
# ssl.sock.read may cause ENOENT if the
# operation couldn't be performed (Issue celery#1414).
@@ -232,7 +232,6 @@ class SSLTransport(_AbstractTransport):
raise IOError('Socket closed')
s = s[n:]
-
class TCPTransport(_AbstractTransport):
"""Transport that deals directly with TCP socket."""
@@ -250,7 +249,7 @@ class TCPTransport(_AbstractTransport):
try:
while len(rbuf) < n:
try:
- s = recv(131072)
+ s = recv(n - len(rbuf))
except socket.error as exc:
if not initial and exc.errno in _errnos:
continue