From 066a0c38fb819419b8422980b61a0fd2f6ee4739 Mon Sep 17 00:00:00 2001 From: David Koblas Date: Tue, 25 Oct 2011 15:24:41 -0700 Subject: [PATCH] Use a AND instead of an OR to determine if the bits are set on the event mask. Also, handle some basic error cases in the event bits and twisted callback. --- tornado/platform/twisted.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tornado/platform/twisted.py b/tornado/platform/twisted.py index 04a32de71..25fe36f35 100644 --- a/tornado/platform/twisted.py +++ b/tornado/platform/twisted.py @@ -32,6 +32,8 @@ import time from twisted.internet.posixbase import PosixReactorBase from twisted.internet.interfaces import \ IReactorFDSet, IDelayedCall, IReactorTime +from twisted.python import failure +from twisted.internet import error from zope.interface import implements @@ -40,6 +42,7 @@ import tornado.ioloop from tornado.stack_context import NullContext from tornado.ioloop import IOLoop + class TornadoDelayedCall(object): """ DelayedCall object for Tornado. @@ -139,10 +142,15 @@ class TornadoReactor(PosixReactorBase): # IReactorFDSet def _invoke_callback(self, fd, events): (reader, writer) = self._fds[fd] - if events | IOLoop.READ and reader: + if events & IOLoop.READ and reader: reader.doRead() - if events | IOLoop.WRITE and writer: + if events & IOLoop.WRITE and writer: writer.doWrite() + if events & IOLoop.ERROR: + if reader: + reader.readConnectionLost(failure.Failure(error.ConnectionLost())) + if writer: + writer.connectionLost(failure.Failure(error.ConnectionLost())) def addReader(self, reader): """ -- 2.47.2