浏览代码

Fix some bugs in the request handler

jonathanvdc 8 年之前
父节点
当前提交
4ef42ee2bd
共有 1 个文件被更改,包括 8 次插入4 次删除
  1. 8 4
      kernel/modelverse_kernel/request_handler.py

+ 8 - 4
kernel/modelverse_kernel/request_handler.py

@@ -78,14 +78,14 @@ class RequestHandler(object):
                 if self.has_pending_requests():
                     try:
                         # Try to pop a request for the modelverse state.
-                        result = self.pop_requests()
-                        return result
+                        return self.pop_requests()
                     except KnownRequestHandled:
                         # Carry on.
                         pass
 
-                # Perform a single generator step.
-                self.step()
+                if not self.has_pending_requests():
+                    # Perform a single generator step.
+                    self.step()
             except StopIteration:
                 # Done, so remove the generator
                 self.pop_generator()
@@ -301,6 +301,7 @@ class RequestHandler(object):
                 ("TRY was given argument list '%s', " +
                  "expected exactly zero arguments.") % repr(request_args))
         self.exception_handlers.append((len(self.generator_stack) - 1, []))
+        self.append_reply(None)
 
     def execute_catch(self, request_args):
         """Executes a CATCH-request with the given argument list."""
@@ -317,6 +318,7 @@ class RequestHandler(object):
                 'current generator.')
 
         handlers.append((exception_type, handler))
+        self.append_reply(None)
 
     def execute_end_try(self, request_args):
         """Executes an END_TRY-request with the given argument list."""
@@ -341,6 +343,7 @@ class RequestHandler(object):
 
         # Everything seems to be in order. Pop the exception handler.
         self.exception_handlers.pop()
+        self.append_reply(None)
 
     def execute_debug_info(self, request_args):
         """Executes a DEBUG_INFO-request with the given argument list."""
@@ -350,4 +353,5 @@ class RequestHandler(object):
         # Format: ("DEBUG_INFO", [function_name, source_map])
         top_entry = self.generator_stack[-1]
         top_entry.function_name, top_entry.source_map = request_args
+        top_entry.append_reply(None)