From 0fff6c86512283d081f72332f458aa4193e51a81 Mon Sep 17 00:00:00 2001 From: "Andrew M. Kuchling" Date: Sat, 10 Jul 2004 17:36:11 +0000 Subject: [PATCH] In poll(), check connections for exceptional conditions --- Lib/asyncore.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Lib/asyncore.py b/Lib/asyncore.py index 9c369776306..f63a83eebad 100644 --- a/Lib/asyncore.py +++ b/Lib/asyncore.py @@ -80,6 +80,14 @@ def write(obj): except: obj.handle_error() +def _exception (obj): + try: + obj.handle_expt_event() + except ExitNow: + raise + except: + obj.handle_error() + def readwrite(obj, flags): try: if flags & (select.POLLIN | select.POLLPRI): @@ -99,6 +107,7 @@ def poll(timeout=0.0, map=None): if map: r = []; w = []; e = [] for fd, obj in map.items(): + e.append(fd) if obj.readable(): r.append(fd) if obj.writable(): @@ -126,6 +135,12 @@ def poll(timeout=0.0, map=None): continue write(obj) + for fd in e: + obj = map.get(fd) + if obj is None: + continue + _exception(obj) + def poll2(timeout=0.0, map=None): # Use the poll() support added to the select module in Python 2.0 if map is None: