]> git.ipfire.org Git - thirdparty/openvpn.git/commitdiff
Do not skip ERROR:/SUCCESS: response from management interface
authorSelva Nair <selva.nair@gmail.com>
Thu, 28 Jul 2022 03:45:07 +0000 (23:45 -0400)
committerGert Doering <gert@greenie.muc.de>
Tue, 2 Aug 2022 11:48:53 +0000 (13:48 +0200)
Generally we expect a response of SUCCESS: or ERROR: to every
command sent to the management interface. But, while in
the management-hold state, sending "signal foo" returns only
the following reply (with foo = SIGHUP, SIGUSR1 etc.):

>HOLD:Waiting for hold release:0

Fix by always responding

ERROR: signal 'foo' is currently ignored"
followed by the above line.

Though this is seldom seen in practice[*], such violation of the
protocol could stall clients like the GUI. So fix it.

[*] One way this happens is with SIGHUP sent before the daemon
is on hold state which it enters before the SIGHUP is received.

Signed-off-by: Selva Nair <selva.nair@gmail.com>
Acked-by: Arne Schwabe <arne@rfc2549.org>
Message-Id: <20220728034508.15180-1-selva.nair@gmail.com>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg24750.html
Signed-off-by: Gert Doering <gert@greenie.muc.de>
src/openvpn/manage.c

index 5d58c662132f8dbfae095a9cf4bd7b670864f5fa..27aa49a8313d05071a1e1127bc0b8c5c372e87f6 100644 (file)
@@ -426,14 +426,11 @@ man_signal(struct management *man, const char *name)
         }
         else
         {
+            msg(M_CLIENT, "ERROR: signal '%s' is currently ignored", name);
             if (man->persist.special_state_msg)
             {
                 msg(M_CLIENT, "%s", man->persist.special_state_msg);
             }
-            else
-            {
-                msg(M_CLIENT, "ERROR: signal '%s' is currently ignored", name);
-            }
         }
     }
     else