greenio: Fix "TypeError: an integer is required" in sendto()
The sendto() interface as defined in Python documentation: socket.sendto(string, address) socket.sendto(string, flags, address) I didn't catch the fact that [1] broke this, this patch fixes it and add a sendto/recvfrom test to make sure it doesn't happen again (turns out we didn't have any). GitHub issue: https://github.com/eventlet/eventlet/issues/290 Fixes:bc4d1b5
- gh-274: Handle blocking I/O errors in GreenSocket [1]bc4d1b5d36
This commit is contained in:
@@ -376,8 +376,8 @@ class GreenSocket(object):
|
||||
def send(self, data, flags=0):
|
||||
return self._send_loop(self.fd.send, data, flags)
|
||||
|
||||
def sendto(self, data, address, flags=0):
|
||||
return self._send_loop(self.fd.sendto, data, address, flags)
|
||||
def sendto(self, data, *args):
|
||||
return self._send_loop(self.fd.sendto, data, *args)
|
||||
|
||||
def sendall(self, data, flags=0):
|
||||
tail = self.send(data, flags)
|
||||
|
@@ -593,6 +593,21 @@ class TestGreenSocket(tests.LimitedTestCase):
|
||||
# should not raise
|
||||
greenio.shutdown_safe(sock)
|
||||
|
||||
def test_datagram_socket_operations_work(self):
|
||||
receiver = greenio.GreenSocket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||
receiver.bind(('127.0.0.1', 0))
|
||||
address = receiver.getsockname()
|
||||
|
||||
sender = greenio.GreenSocket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||
|
||||
# Two ways sendto can be called
|
||||
sender.sendto(b'first', address)
|
||||
sender.sendto(b'second', 0, address)
|
||||
|
||||
sender_address = ('127.0.0.1', sender.getsockname()[1])
|
||||
eq_(receiver.recvfrom(1024), (b'first', sender_address))
|
||||
eq_(receiver.recvfrom(1024), (b'second', sender_address))
|
||||
|
||||
|
||||
def test_get_fileno_of_a_socket_works():
|
||||
class DummySocket(object):
|
||||
|
Reference in New Issue
Block a user