diff --git a/eventlet/green/zmq.py b/eventlet/green/zmq.py index 1051c43..e424c56 100644 --- a/eventlet/green/zmq.py +++ b/eventlet/green/zmq.py @@ -212,8 +212,8 @@ class Socket(_Socket): self._eventlet_listener = hub.add(hub.READ, self.getsockopt(FD), event) @_wraps(_Socket.close) - def close(self): - _Socket.close(self) + def close(self, linger=None): + super(Socket, self).close(linger) if self._eventlet_listener is not None: hubs.get_hub().remove(self._eventlet_listener) self._eventlet_listener = None diff --git a/tests/zmq_test.py b/tests/zmq_test.py index 8035a2c..2a6e91e 100644 --- a/tests/zmq_test.py +++ b/tests/zmq_test.py @@ -58,6 +58,16 @@ got '%s'" % (zmq.ZMQError(errno), zmq.ZMQError(e.errno))) else: self.fail("Function did not raise any error") + @skip_unless(zmq_supported) + def test_close_linger(self): + """Socket.close() must support linger argument. + + https://github.com/eventlet/eventlet/issues/9 + """ + sock1, sock2, _ = self.create_bound_pair(zmq.PAIR, zmq.PAIR) + sock1.close(1) + sock2.close(linger=0) + @skip_unless(zmq_supported) def test_recv_spawned_before_send_is_non_blocking(self): req, rep, port = self.create_bound_pair(zmq.PAIR, zmq.PAIR)