If the configuration is read from stdin, we cannot reread the configuration
as stdin provides the configuration only once. So whenever we hit the
"close_context usr1 to hup" logic, the OpenVPN process will fail as tries
to restart with an empty configuration.
While OpenVPN tries to block USR1 from normal unix signal, I have observed
cases in my app which sends USR1 from management interface where the
CC_HARD_USR1_TO_HUP logic is trigger and breaking the OpenVPN process.
Change-Id: Icfc179490d6821e22d14817941fb0bad667c713f
Signed-off-by: Arne Schwabe <arne@rfc2549.org>
Acked-by: Frank Lichtenheld <frank@lichtenheld.com>
Message-Id: <
20240719131016.75042-1-frank@lichtenheld.com>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg28941.html
Signed-off-by: Gert Doering <gert@greenie.muc.de>
#include "multi.h"
#include "win32.h"
#include "platform.h"
+#include "string.h"
#include "memdbg.h"
/* set point-to-point mode */
c->mode = CM_P2P;
-
- /* initialize tunnel instance */
- init_instance_handle_signals(c, c->es, CC_HARD_USR1_TO_HUP);
+ /* initialize tunnel instance, avoid SIGHUP when config is stdin since
+ * re-reading the config from stdin will not work */
+ bool stdin_config = c->options.config && (strcmp(c->options.config, "stdin") == 0);
+ init_instance_handle_signals(c, c->es, stdin_config ? 0 : CC_HARD_USR1_TO_HUP);
if (IS_SIG(c))
{
return;