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"));