Revert "greenio: Remove sendall-like semantincs from GreenSocket.send"
On Travis CI it breaks the build with:
======================================================================
FAIL: test_multiple_readers (tests.greenio_test.TestGreenIoLong)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/travis/build/eventlet/eventlet/tests/__init__.py", line 71, in wrapped
return func(*a, **kw)
File "/home/travis/build/eventlet/eventlet/tests/greenio_test.py", line 836, in test_multiple_readers
assert len(results2) > 0
AssertionError
This reverts commit 4656eadfa5
.
This commit is contained in:
@@ -351,20 +351,28 @@ class GreenSocket(object):
|
|||||||
if self.act_non_blocking:
|
if self.act_non_blocking:
|
||||||
return fd.send(data, flags)
|
return fd.send(data, flags)
|
||||||
|
|
||||||
|
# blocking socket behavior - sends all, blocks if the buffer is full
|
||||||
|
total_sent = 0
|
||||||
|
len_data = len(data)
|
||||||
while 1:
|
while 1:
|
||||||
try:
|
try:
|
||||||
return fd.send(data, flags)
|
total_sent += fd.send(data[total_sent:], flags)
|
||||||
except socket.error as e:
|
except socket.error as e:
|
||||||
eno = get_errno(e)
|
eno = get_errno(e)
|
||||||
if eno == errno.ENOTCONN or eno not in SOCKET_BLOCKING:
|
if eno == errno.ENOTCONN or eno not in SOCKET_BLOCKING:
|
||||||
raise
|
raise
|
||||||
|
|
||||||
|
if total_sent == len_data:
|
||||||
|
break
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self._trampoline(self.fd, write=True, timeout=self.gettimeout(),
|
self._trampoline(self.fd, write=True, timeout=self.gettimeout(),
|
||||||
timeout_exc=socket.timeout("timed out"))
|
timeout_exc=socket.timeout("timed out"))
|
||||||
except IOClosed:
|
except IOClosed:
|
||||||
raise socket.error(errno.ECONNRESET, 'Connection closed by another thread')
|
raise socket.error(errno.ECONNRESET, 'Connection closed by another thread')
|
||||||
|
|
||||||
|
return total_sent
|
||||||
|
|
||||||
def sendall(self, data, flags=0):
|
def sendall(self, data, flags=0):
|
||||||
tail = self.send(data, flags)
|
tail = self.send(data, flags)
|
||||||
len_data = len(data)
|
len_data = len(data)
|
||||||
|
Reference in New Issue
Block a user