[Sugar-devel] [PATCH sugar-toolkit] GlibTCPServer: defer shutdown_request to avoid closing the socket too early OLPC #10906

Simon Schampijer simon at schampijer.de
Wed Jun 29 08:44:53 EDT 2011

From: Daniel Drake <dsd at laptop.org>

In Python 2.7, shutdown_request was added to the BaseServer class and
TCPServer was adopted to use it instead of close_request in the
_handle_request_noblock() path.

GlibTCPServer must be adapted to account for this, so that
shutdown_request is not allowed to prematurely allowed to close the socket,
in the same way that close_request is ignored.

Fixes collaboration in activities that rely on this mechanism for
sharing (including ImageViewer and Read)

Signed-off-by: Daniel Drake <daniel at laptop.org>
Acked-by: Simon Schampijer <simon at laptop.org>
Tested-by: Gonzalo Odiard <gonzalo at laptop.org>
Tested-by: Simon Schampijer <simon at laptop.org>
 src/sugar/network.py |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/src/sugar/network.py b/src/sugar/network.py
index 34d496c..217c077 100644
--- a/src/sugar/network.py
+++ b/src/sugar/network.py
@@ -75,6 +75,12 @@ class GlibTCPServer(SocketServer.TCPServer):
         # let the request be closed by the request handler when its done
+    def shutdown_request(self, request):
+        """Called to shutdown and close an individual request."""
+        # like close_request, let the request be closed by the request handler
+        # when done
+        pass
 class ChunkedGlibHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
     """RequestHandler class that integrates with Glib mainloop.  It writes

More information about the Sugar-devel mailing list