X-Git-Url: https://git.syn-net.org/debian/?a=blobdiff_plain;f=src%2Fposix%2FsignalHandler.hpp;h=c96a6f6f31088a4e8fe6745c0c83d036e4178fec;hb=59f70c469910fe88a529c043ab0364ca5f8918b9;hp=3851c784d197dd0b5cc852d18a099794da6b5017;hpb=ece844834d2cecc028ce81ca283f5d441088580e;p=anytun.git diff --git a/src/posix/signalHandler.hpp b/src/posix/signalHandler.hpp index 3851c78..c96a6f6 100644 --- a/src/posix/signalHandler.hpp +++ b/src/posix/signalHandler.hpp @@ -6,12 +6,12 @@ * tunnel endpoints. It has less protocol overhead than IPSec in Tunnel * mode and allows tunneling of every ETHER TYPE protocol (e.g. * ethernet, ip, arp ...). satp directly includes cryptography and - * message authentication based on the methodes used by SRTP. It is + * message authentication based on the methods used by SRTP. It is * intended to deliver a generic, scaleable and secure solution for * tunneling and relaying of packets of any protocol. * * - * Copyright (C) 2007-2009 Othmar Gsenger, Erwin Nindl, + * Copyright (C) 2007-2014 Markus Grüneis, Othmar Gsenger, Erwin Nindl, * Christian Pointner * * This file is part of Anytun. @@ -27,7 +27,20 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with anytun. If not, see . + * along with Anytun. If not, see . + * + * In addition, as a special exception, the copyright holders give + * permission to link the code of portions of this program with the + * OpenSSL library under certain conditions as described in each + * individual source file, and distribute linked combinations + * including the two. + * You must obey the GNU General Public License in all respects + * for all of the code used other than OpenSSL. If you modify + * file(s) with this exception, you may extend this exception to your + * version of the file(s), but you are not obligated to do so. If you + * do not wish to do so, delete this exception statement from your + * version. If you delete this exception statement from all source + * files in the program, then also delete it here. */ #ifndef ANYTUN_signalHandler_hpp_INCLUDED @@ -51,7 +64,7 @@ int SigQuitHandler(int /*sig*/, const std::string& /*msg*/) int SigHupHandler(int /*sig*/, const std::string& /*msg*/) { - cLog.msg(Log::PRIO_NOTICE) << "SIG-Hup caught"; + cLog.msg(Log::PRIO_NOTICE) << "SIG-Hup caught"; return 0; } @@ -87,7 +100,7 @@ void handleSignal() struct timespec timeout; sigset_t signal_set; int sigNum; - while(1) { + for(;;) { sigemptyset(&signal_set); sigaddset(&signal_set, SIGINT); sigaddset(&signal_set, SIGQUIT); @@ -98,10 +111,10 @@ void handleSignal() timeout.tv_sec = 1; timeout.tv_nsec = 0; sigNum = sigtimedwait(&signal_set, NULL, &timeout); - if (sigNum == -1) { - if (errno != EINTR && errno != EAGAIN) { - cLog.msg(Log::PRIO_ERROR) << "sigwait failed with error: \"" << AnytunErrno(errno) << "\" SignalHandling will be disabled"; - break; + if(sigNum == -1) { + if(errno != EINTR && errno != EAGAIN) { + cLog.msg(Log::PRIO_ERROR) << "sigwait failed with error: \"" << AnytunErrno(errno) << "\" SignalHandling will be disabled"; + break; } } else { gSignalController.inject(sigNum); @@ -112,7 +125,7 @@ void handleSignal() void registerSignalHandler(SignalController& ctrl, DaemonService& /*service*/) { sigset_t signal_set; - + sigemptyset(&signal_set); sigaddset(&signal_set, SIGINT); sigaddset(&signal_set, SIGQUIT); @@ -120,13 +133,13 @@ void registerSignalHandler(SignalController& ctrl, DaemonService& /*service*/) sigaddset(&signal_set, SIGTERM); sigaddset(&signal_set, SIGUSR1); sigaddset(&signal_set, SIGUSR2); - + #if defined(BOOST_HAS_PTHREADS) pthread_sigmask(SIG_BLOCK, &signal_set, NULL); #else #error The signalhandler works only with pthreads #endif - + boost::thread(boost::bind(handleSignal)); ctrl.handler[SIGINT] = boost::bind(SigIntHandler, _1, _2);