diff --git a/eventlet/greenio/base.py b/eventlet/greenio/base.py index 634304a..5f0108c 100644 --- a/eventlet/greenio/base.py +++ b/eventlet/greenio/base.py @@ -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) diff --git a/tests/greenio_test.py b/tests/greenio_test.py index 7b0ff7c..5eb4a90 100644 --- a/tests/greenio_test.py +++ b/tests/greenio_test.py @@ -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):