From 7e9b439c1cfedfedb2a94e5a1d8e44a9987f9570 Mon Sep 17 00:00:00 2001 From: Julien Thewys Date: Mon, 17 Jan 2011 21:59:59 +0100 Subject: [PATCH] [FIX] socket: avoids interaction between Nagle and delayed ACK algorithm. By default, ACK delay is 200ms on Windows which terribly slows down conversations between client and server (when deployed on different machines). To avoid any slow down, TCP_NODELAY should be enabled on clients' socket too. More details: http://developers.slashdot.org/comments.pl?sid=174457&threshold=1&commentsort=0&mode=thread&cid=14515105 bzr revid: jth@openerp.com-20110117205959-8kxaz0of8ta9dmfw --- bin/service/netrpc_server.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bin/service/netrpc_server.py b/bin/service/netrpc_server.py index 9d25c98083a..f991b6a72f6 100644 --- a/bin/service/netrpc_server.py +++ b/bin/service/netrpc_server.py @@ -108,6 +108,8 @@ class TinySocketServerThread(threading.Thread,netsvc.Server): self.__interface = interface self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + # disables Nagle algorithm (avoids 200ms default delay on Windows) + self.sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) self.socket.bind((self.__interface, self.__port)) self.socket.listen(5) self.threads = []