]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
Fix httpclient / epoll interaction errors, per http://groups.google.com/group/python...
authorBret Taylor <btaylor@gmail.com>
Mon, 18 Jan 2010 05:12:24 +0000 (21:12 -0800)
committerBret Taylor <btaylor@gmail.com>
Mon, 18 Jan 2010 05:12:24 +0000 (21:12 -0800)
tornado/httpclient.py
tornado/ioloop.py

index 7819bd3bb7fc7a990ec49ac416305143d3637819..23496d7b47704427d1d0a4cb3bd4f9c3c4333bc9 100644 (file)
@@ -211,7 +211,11 @@ class AsyncHTTPClient(object):
 
         for fd in self._fds:
             if fd not in fds:
-                self.io_loop.remove_handler(fd)
+                try:
+                    self.io_loop.remove_handler(fd)
+                except (OSError, IOError), e:
+                    if e[0] != errno.ENOENT:
+                        raise
 
         for fd, events in fds.iteritems():
             old_events = self._fds.get(fd, None)
@@ -220,7 +224,7 @@ class AsyncHTTPClient(object):
             elif old_events != events:
                 try:
                     self.io_loop.update_handler(fd, events)
-                except OSError, e:
+                except (OSError, IOError), e:
                     if e[0] == errno.ENOENT:
                         self.io_loop.add_handler(fd, self._handle_events,
                                                  events)
index 5c7f194f2d55977957fbca934195c45268728b91..2d04c7205b5b904866ae0fe90213fdcde36f39e5 100644 (file)
@@ -136,7 +136,7 @@ class IOLoop(object):
         self._events.pop(fd, None)
         try:
             self._impl.unregister(fd)
-        except OSError:
+        except (OSError, IOError):
             logging.debug("Error deleting fd from IOLoop", exc_info=True)
 
     def start(self):
@@ -197,7 +197,7 @@ class IOLoop(object):
                     self._handlers[fd](fd, events)
                 except KeyboardInterrupt:
                     raise
-                except OSError, e:
+                except (OSError, IOError), e:
                     if e[0] == errno.EPIPE:
                         # Happens when the client closes the connection
                         pass