From 043c92fedd570cc5268f0f4dd3a38ff6cf2e76de Mon Sep 17 00:00:00 2001 From: "chao.an" Date: Sun, 17 Jan 2021 11:58:57 +0800 Subject: [PATCH] net/tcp: only print the error when disable the TCP_NODELAY Since we do not have the Nagle's algorithm, the TCP_NODELAY socket option is enabled by default. Change-Id: I0c8619bb06cf418f7eded5bd72ac512b349cacc5 Signed-off-by: chao.an --- net/tcp/tcp_getsockopt.c | 16 ++++++++++++++-- net/tcp/tcp_setsockopt.c | 20 ++++++++++++++++++-- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/net/tcp/tcp_getsockopt.c b/net/tcp/tcp_getsockopt.c index c07a488873e..dca7588f802 100644 --- a/net/tcp/tcp_getsockopt.c +++ b/net/tcp/tcp_getsockopt.c @@ -154,8 +154,20 @@ int tcp_getsockopt(FAR struct socket *psock, int option, break; case TCP_NODELAY: /* Avoid coalescing of small segments. */ - nerr("ERROR: TCP_NODELAY not supported\n"); - ret = -ENOSYS; + if (*value_len < sizeof(int)) + { + ret = -EINVAL; + } + else + { + FAR int *nodelay = (FAR int *)value; + + /* Always true here since we do not support Nagle. */ + + *nodelay = 1; + *value_len = sizeof(int); + ret = OK; + } break; case TCP_KEEPIDLE: /* Start keepalives after this IDLE period */ diff --git a/net/tcp/tcp_setsockopt.c b/net/tcp/tcp_setsockopt.c index bfb61fe9f56..d37bc6cb0d3 100644 --- a/net/tcp/tcp_setsockopt.c +++ b/net/tcp/tcp_setsockopt.c @@ -148,8 +148,24 @@ int tcp_setsockopt(FAR struct socket *psock, int option, break; case TCP_NODELAY: /* Avoid coalescing of small segments. */ - nerr("ERROR: TCP_NODELAY not supported\n"); - ret = -ENOSYS; + if (value_len != sizeof(int)) + { + ret = -EDOM; + } + else + { + int nodelay = *(FAR int *)value; + + if (nodelay) + { + ret = OK; + } + else + { + nerr("ERROR: TCP_NODELAY not supported\n"); + ret = -ENOSYS; + } + } break; case TCP_KEEPIDLE: /* Start keepalives after this IDLE period */