Index: sync/tools/testserver/sync_testserver.py |
diff --git a/sync/tools/testserver/sync_testserver.py b/sync/tools/testserver/sync_testserver.py |
index b3ca64203043cac0040294efc69ebd98b3f917d3..d65be40ffbbffdc3dbe95889d9902e9d7057f76d 100755 |
--- a/sync/tools/testserver/sync_testserver.py |
+++ b/sync/tools/testserver/sync_testserver.py |
@@ -70,10 +70,8 @@ class SyncHTTPServer(testserver_base.ClientRestrictingServerMixIn, |
def GetAuthenticated(self): |
return self.authenticated |
- def serve_forever(self): |
- """This is a merge of asyncore.loop() and SocketServer.serve_forever(). |
- """ |
- |
+ def handle_request(self): |
+ """Adaptation of asyncore.loop""" |
def HandleXmppSocket(fd, socket_map, handler): |
"""Runs the handler for the xmpp connection for fd. |
@@ -92,44 +90,43 @@ class SyncHTTPServer(testserver_base.ClientRestrictingServerMixIn, |
except: |
xmpp_connection.handle_error() |
- while True: |
- read_fds = [ self.fileno() ] |
- write_fds = [] |
- exceptional_fds = [] |
- |
- for fd, xmpp_connection in self._xmpp_socket_map.items(): |
- is_r = xmpp_connection.readable() |
- is_w = xmpp_connection.writable() |
- if is_r: |
- read_fds.append(fd) |
- if is_w: |
- write_fds.append(fd) |
- if is_r or is_w: |
- exceptional_fds.append(fd) |
+ read_fds = [ self.fileno() ] |
+ write_fds = [] |
+ exceptional_fds = [] |
- try: |
- read_fds, write_fds, exceptional_fds = ( |
- select.select(read_fds, write_fds, exceptional_fds)) |
- except select.error, err: |
- if err.args[0] != errno.EINTR: |
- raise |
- else: |
- continue |
- |
- for fd in read_fds: |
- if fd == self.fileno(): |
- self.HandleRequestNoBlock() |
- continue |
- HandleXmppSocket(fd, self._xmpp_socket_map, |
- asyncore.dispatcher.handle_read_event) |
- |
- for fd in write_fds: |
- HandleXmppSocket(fd, self._xmpp_socket_map, |
- asyncore.dispatcher.handle_write_event) |
- |
- for fd in exceptional_fds: |
- HandleXmppSocket(fd, self._xmpp_socket_map, |
- asyncore.dispatcher.handle_expt_event) |
+ for fd, xmpp_connection in self._xmpp_socket_map.items(): |
+ is_r = xmpp_connection.readable() |
+ is_w = xmpp_connection.writable() |
+ if is_r: |
+ read_fds.append(fd) |
+ if is_w: |
+ write_fds.append(fd) |
+ if is_r or is_w: |
+ exceptional_fds.append(fd) |
+ |
+ try: |
+ read_fds, write_fds, exceptional_fds = ( |
+ select.select(read_fds, write_fds, exceptional_fds)) |
+ except select.error, err: |
+ if err.args[0] != errno.EINTR: |
+ raise |
+ else: |
+ return |
+ |
+ for fd in read_fds: |
+ if fd == self.fileno(): |
+ self.HandleRequestNoBlock() |
+ return |
+ HandleXmppSocket(fd, self._xmpp_socket_map, |
+ asyncore.dispatcher.handle_read_event) |
+ |
+ for fd in write_fds: |
+ HandleXmppSocket(fd, self._xmpp_socket_map, |
+ asyncore.dispatcher.handle_write_event) |
+ |
+ for fd in exceptional_fds: |
+ HandleXmppSocket(fd, self._xmpp_socket_map, |
+ asyncore.dispatcher.handle_expt_event) |
class SyncPageHandler(testserver_base.BasePageHandler): |