]> 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:50:59 +0000 (13:50 +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>
(cherry picked from commit 579b78e22feab7fe7cc627355cbb270cd91aebb4)

src/openvpn/manage.c

index 0b9e92b6b9a252d3c7ab3ad758b82cb18832a62a..0ba4f677d1f2e788810593f8d997c12c22730169 100644 (file)
@@ -428,14 +428,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