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 */