From ae1884c0cbf42c21e54922c150cde44c43200340 Mon Sep 17 00:00:00 2001 From: James Yonan Date: Mon, 13 Dec 2010 09:27:08 +0000 Subject: 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 --- forward.c | 36 ++++++++++++------------------------ 1 file changed, 12 insertions(+), 24 deletions(-) (limited to 'forward.c') diff --git a/forward.c b/forward.c index 44ebd0c..5d34472 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 @@ -677,8 +670,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 @@ -686,8 +678,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 @@ -701,8 +692,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); } } @@ -834,8 +824,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; } @@ -947,8 +936,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; -- cgit