From 10580fc2a73aec1f828a3d8d43489e1d31a670c1 Mon Sep 17 00:00:00 2001 From: Daniel Drake Date: Tue, 28 Jun 2011 23:01:12 +0100 Subject: [PATCH] GlibTCPServer: defer shutdown_request to avoid closing the socket too early OLPC #10906 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 Acked-by: Simon Schampijer Tested-by: Gonzalo Odiard Tested-by: Simon Schampijer --- src/sugar/network.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/sugar/network.py b/src/sugar/network.py index 34d496c0..217c0777 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 pass + 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