summaryrefslogtreecommitdiffstats
path: root/forward.c
diff options
context:
space:
mode:
authorJames Yonan <james@openvpn.net>2010-12-13 09:27:08 +0000
committerDavid Sommerseth <davids@redhat.com>2011-03-25 09:38:48 +0100
commit7fc00d4cbe87206eea3ff5a8d12908c8c942f045 (patch)
treef912cf7fef1c9be191d2fadc0c05ac9a984da2d3 /forward.c
parentcf69617bbea45a15423c4188daa9386debcbe1ec (diff)
downloadopenvpn-7fc00d4cbe87206eea3ff5a8d12908c8c942f045.tar.gz
openvpn-7fc00d4cbe87206eea3ff5a8d12908c8c942f045.tar.xz
openvpn-7fc00d4cbe87206eea3ff5a8d12908c8c942f045.zip
Misc fixes to r6708.
Fixed issue where "signal SIGTERM" entered from the management interface might get subsequently downgraded to a SIGUSR1. git-svn-id: http://svn.openvpn.net/projects/openvpn/branches/BETA21/openvpn@6716 e7ae566f-a301-0410-adde-c780ea21d3b5
Diffstat (limited to 'forward.c')
-rw-r--r--forward.c36
1 files changed, 12 insertions, 24 deletions
diff --git a/forward.c b/forward.c
index 87d05cc..254d827 100644
--- a/forward.c
+++ b/forward.c
@@ -98,8 +98,7 @@ check_tls_dowork (struct context *c)
}
else if (tmp_status == TLSMP_KILL)
{
- c->sig->signal_received = SIGTERM;
- c->sig->signal_text = "auth-control-exit";
+ register_signal (c, SIGTERM, "auth-control-exit");
}
interval_future_trigger (&c->c2.tmp_int, wakeup);
@@ -118,15 +117,13 @@ void
check_tls_errors_co (struct context *c)
{
msg (D_STREAM_ERRORS, "Fatal TLS error (check_tls_errors_co), restarting");
- c->sig->signal_received = c->c2.tls_exit_signal; /* SOFT-SIGUSR1 -- TLS error */
- c->sig->signal_text = "tls-error";
+ register_signal (c, c->c2.tls_exit_signal, "tls-error"); /* SOFT-SIGUSR1 -- TLS error */
}
void
check_tls_errors_nco (struct context *c)
{
- c->sig->signal_received = c->c2.tls_exit_signal; /* SOFT-SIGUSR1 -- TLS error */
- c->sig->signal_text = "tls-error";
+ register_signal (c, c->c2.tls_exit_signal, "tls-error"); /* SOFT-SIGUSR1 -- TLS error */
}
#endif
@@ -287,8 +284,7 @@ check_add_routes_dowork (struct context *c)
{
if (!tun_standby (c->c1.tuntap))
{
- c->sig->signal_received = SIGHUP;
- c->sig->signal_text = "ip-fail";
+ register_signal (c, SIGHUP, "ip-fail");
c->persist.restart_sleep_seconds = 10;
#ifdef WIN32
show_routes (M_INFO|M_NOPREFIX);
@@ -310,8 +306,7 @@ void
check_inactivity_timeout_dowork (struct context *c)
{
msg (M_INFO, "Inactivity timeout (--inactive), exiting");
- c->sig->signal_received = SIGTERM;
- c->sig->signal_text = "inactive";
+ register_signal (c, SIGTERM, "inactive");
}
#if P2MP
@@ -323,8 +318,7 @@ check_server_poll_timeout_dowork (struct context *c)
if (!tls_initial_packet_received (c->c2.tls_multi))
{
msg (M_INFO, "Server poll timeout, restarting");
- c->sig->signal_received = SIGUSR1;
- c->sig->signal_text = "server_poll";
+ register_signal (c, SIGUSR1, "server_poll");
c->persist.restart_sleep_seconds = -1;
}
}
@@ -349,8 +343,7 @@ schedule_exit (struct context *c, const int n_seconds, const int signal)
void
check_scheduled_exit_dowork (struct context *c)
{
- c->sig->signal_received = c->c2.scheduled_exit_signal;
- c->sig->signal_text = "delayed-exit";
+ register_signal (c, c->c2.scheduled_exit_signal, "delayed-exit");
}
#endif
@@ -675,8 +668,7 @@ read_incoming_link (struct context *c)
const struct buffer *fbuf = socket_foreign_protocol_head (c->c2.link_socket);
const int sd = socket_foreign_protocol_sd (c->c2.link_socket);
port_share_redirect (port_share, fbuf, sd);
- c->sig->signal_received = SIGTERM;
- c->sig->signal_text = "port-share-redirect";
+ register_signal (c, SIGTERM, "port-share-redirect");
}
else
#endif
@@ -684,8 +676,7 @@ read_incoming_link (struct context *c)
/* received a disconnect from a connection-oriented protocol */
if (c->options.inetd)
{
- c->sig->signal_received = SIGTERM;
- c->sig->signal_text = "connection-reset-inetd";
+ register_signal (c, SIGTERM, "connection-reset-inetd");
msg (D_STREAM_ERRORS, "Connection reset, inetd/xinetd exit [%d]", status);
}
else
@@ -699,8 +690,7 @@ read_incoming_link (struct context *c)
else
#endif
{
- c->sig->signal_received = SIGUSR1; /* SOFT-SIGUSR1 -- TCP connection reset */
- c->sig->signal_text = "connection-reset";
+ register_signal (c, SIGUSR1, "connection-reset"); /* SOFT-SIGUSR1 -- TCP connection reset */
msg (D_STREAM_ERRORS, "Connection reset, restarting [%d]", status);
}
}
@@ -824,8 +814,7 @@ process_incoming_link (struct context *c)
if (!decrypt_status && link_socket_connection_oriented (c->c2.link_socket))
{
/* decryption errors are fatal in TCP mode */
- c->sig->signal_received = SIGUSR1; /* SOFT-SIGUSR1 -- decryption error in TCP mode */
- c->sig->signal_text = "decryption-error";
+ register_signal (c, SIGUSR1, "decryption-error"); /* SOFT-SIGUSR1 -- decryption error in TCP mode */
msg (D_STREAM_ERRORS, "Fatal decryption error (process_incoming_link), restarting");
goto done;
}
@@ -937,8 +926,7 @@ read_incoming_tun (struct context *c)
/* Was TUN/TAP interface stopped? */
if (tuntap_stop (c->c2.buf.len))
{
- c->sig->signal_received = SIGTERM;
- c->sig->signal_text = "tun-stop";
+ register_signal (c, SIGTERM, "tun-stop");
msg (M_INFO, "TUN/TAP interface has been stopped, exiting");
perf_pop ();
return;