From 7ae94f608a70a757b743ad777c9e62fe9fa699dc Mon Sep 17 00:00:00 2001
From: Stefan Glaser <stefan.glaser@hs-offenburg.de>
Date: Wed, 3 Apr 2019 14:51:31 +0200
Subject: [PATCH] Process TCP-NO-DELAY option for incoming subscriber
 connections.

* Check incoming subscriber connection requests for the TCP-NO-DELAY header field and set the TCP-NO-DELAY option on the corresponding channel accordingly.
---
 .../ros/internal/transport/tcp/TcpServerHandshakeHandler.java | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/rosjava/src/main/java/org/ros/internal/transport/tcp/TcpServerHandshakeHandler.java b/rosjava/src/main/java/org/ros/internal/transport/tcp/TcpServerHandshakeHandler.java
index f5f1a149..6f534d58 100644
--- a/rosjava/src/main/java/org/ros/internal/transport/tcp/TcpServerHandshakeHandler.java
+++ b/rosjava/src/main/java/org/ros/internal/transport/tcp/TcpServerHandshakeHandler.java
@@ -96,6 +96,10 @@ public class TcpServerHandshakeHandler extends SimpleChannelHandler {
     DefaultPublisher<?> publisher = topicParticipantManager.getPublisher(topicName);
     ChannelBuffer outgoingBuffer = publisher.finishHandshake(incomingConnectionHeader);
     Channel channel = ctx.getChannel();
+    if (incomingConnectionHeader.hasField(ConnectionHeaderFields.TCP_NODELAY)) {
+      boolean tcpNoDelay = "1".equals(incomingConnectionHeader.getField(ConnectionHeaderFields.TCP_NODELAY));
+      channel.getConfig().setOption("tcpNoDelay", tcpNoDelay);
+    }
     ChannelFuture future = channel.write(outgoingBuffer).await();
     if (!future.isSuccess()) {
       throw new RosRuntimeException(future.getCause());
-- 
GitLab