From: David Sommerseth Date: Tue, 9 Dec 2014 09:52:44 +0000 (+0100) Subject: sockets: Remove the limitation of --tcp-nodelay to be server-only X-Git-Tag: v2.3.7~43 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=333566fd9d1951be97397f5f19d8bc78fb025af9;p=thirdparty%2Fopenvpn.git sockets: Remove the limitation of --tcp-nodelay to be server-only The assert(0) happening if trying to use --tcp-nodelay in a client config is really not helpful at all. When this assert(0) was removed, another warning appeared that this could only be used in server configs. That itself is also quite silly, as clients can choose to use --socket-flags TCP_NODELAY in the client config instead. This behaviour does not help the user in any way. This patch removes the server-only restriction and rather provides a more helpful warning when using --tcp-nodelay on the client side. Trac: 489 Signed-off-by: David Sommerseth Acked-by: Arne Schwabe Message-Id: 1418118764-17846-1-git-send-email-openvpn.list@topphemmelig.net URL: http://article.gmane.org/gmane.network.openvpn.devel/9334 (cherry picked from commit 706283d3765d1ee62dbd913fbfc191855b92528d) --- diff --git a/src/openvpn/helper.c b/src/openvpn/helper.c index 0ed0b2ba1..339e2aea8 100644 --- a/src/openvpn/helper.c +++ b/src/openvpn/helper.c @@ -534,7 +534,7 @@ helper_tcp_nodelay (struct options *o) } else { - ASSERT (0); + o->sockflags |= SF_TCP_NODELAY; } } #endif diff --git a/src/openvpn/options.c b/src/openvpn/options.c index 5bddca4ac..99d98b424 100644 --- a/src/openvpn/options.c +++ b/src/openvpn/options.c @@ -2126,7 +2126,9 @@ options_postprocess_verify_ce (const struct options *options, const struct conne if (options->ssl_flags & SSLF_OPT_VERIFY) msg (M_USAGE, "--opt-verify requires --mode server"); if (options->server_flags & SF_TCP_NODELAY_HELPER) - msg (M_USAGE, "--tcp-nodelay requires --mode server"); + msg (M_WARN, "WARNING: setting tcp-nodelay on the client side will not " + "affect the server. To have TCP_NODELAY in both direction use " + "tcp-nodelay in the server configuration instead."); if (options->auth_user_pass_verify_script) msg (M_USAGE, "--auth-user-pass-verify requires --mode server"); #if PORT_SHARE