diff --git a/eventlet/api_test.py b/eventlet/api_test.py index 8680396..73a9d50 100644 --- a/eventlet/api_test.py +++ b/eventlet/api_test.py @@ -32,8 +32,9 @@ def check_hub(): api.sleep(0) api.sleep(0) hub = api.get_hub() - for dct in hub.readers, hub.writers, hub.excs: - assert not dct, repr(dct) + for nm in 'readers', 'writers', 'excs': + dct = getattr(hub, nm) + assert not dct, "hub.%s not empty: %s" % (nm, dct) # Stop the runloop api.get_hub().abort() api.sleep(0) @@ -74,12 +75,11 @@ class TestApi(tests.TestCase): check_hub() def test_server(self): + connected = [] server = api.tcp_listener(('0.0.0.0', 0)) bound_port = server.getsockname()[1] - connected = [] def accept_twice((conn, addr)): - print 'connected' connected.append(True) conn.close() if len(connected) == 2: diff --git a/eventlet/libeventhub.py b/eventlet/libeventhub.py index 1cfd592..411b6a9 100644 --- a/eventlet/libeventhub.py +++ b/eventlet/libeventhub.py @@ -34,6 +34,9 @@ from eventlet import hub import greenlet +# XXX for debugging only +#raise ImportError() + try: # use rel if it's available import rel @@ -68,20 +71,16 @@ class Hub(hub.BaseHub): evt = event.write(fileno, write, fileno) evt.add() self.writers[fileno] = evt, write + + if exc: + self.excs[fileno] = exc def remove_descriptor(self, fileno): for queue in (self.readers, self.writers): tpl = queue.pop(fileno, None) if tpl is not None: tpl[0].delete() - - def exc_descriptor(self, fileno): - for queue in (self.readers, self.writers): - tpl = queue.pop(fileno, None) - if tpl is not None: - evt, cb = tpl - evt.delete() - cb(fileno) + self.excs.pop(fileno, None) def signal_received(self, signal): self.interrupted = True