From e837f37c0f1335acb3a70433f37f33d880b77bf0 Mon Sep 17 00:00:00 2001 From: Sergey Shepelev Date: Mon, 14 Jan 2013 02:04:47 +0400 Subject: [PATCH] zmq: Socket.close() support linger argument; Thanks to Eric Windisch https://github.com/eventlet/eventlet/issues/9 Regression. Worked in 0.9.16 because .close() method was not overriden. --- eventlet/green/zmq.py | 4 ++-- tests/zmq_test.py | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) 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)