From f2958ffb552dbfdf7064169e459429ff7a0773e6 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Wed, 29 Jan 2025 09:58:45 -0800 Subject: [PATCH] GUACAMOLE-377: Set NO_DELAY on guacd socket to avoid unnecessary latency. --- .../java/org/apache/guacamole/net/InetGuacamoleSocket.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/guacamole-common/src/main/java/org/apache/guacamole/net/InetGuacamoleSocket.java b/guacamole-common/src/main/java/org/apache/guacamole/net/InetGuacamoleSocket.java index 29ad5b3cd..d10ce58f7 100644 --- a/guacamole-common/src/main/java/org/apache/guacamole/net/InetGuacamoleSocket.java +++ b/guacamole-common/src/main/java/org/apache/guacamole/net/InetGuacamoleSocket.java @@ -34,6 +34,7 @@ import java.io.OutputStreamWriter; import java.net.InetSocketAddress; import java.net.SocketAddress; import java.net.SocketTimeoutException; +import java.net.StandardSocketOptions; import org.apache.guacamole.GuacamoleException; import org.apache.guacamole.GuacamoleServerException; import org.apache.guacamole.GuacamoleUpstreamTimeoutException; @@ -102,6 +103,10 @@ public class InetGuacamoleSocket implements GuacamoleSocket { // Set read timeout sock.setSoTimeout(SOCKET_TIMEOUT); + // Set TCP_NODELAY to avoid any latency that would otherwise be + // added by the networking stack and Nagle's algorithm + sock.setTcpNoDelay(true); + // On successful connect, retrieve I/O streams reader = new ReaderGuacamoleReader(new InputStreamReader(sock.getInputStream(), "UTF-8")); writer = new WriterGuacamoleWriter(new OutputStreamWriter(sock.getOutputStream(), "UTF-8"));