diff options
author | Gordon Sim <gsim@apache.org> | 2008-07-07 13:15:39 +0000 |
---|---|---|
committer | Gordon Sim <gsim@apache.org> | 2008-07-07 13:15:39 +0000 |
commit | a1344ada8df15243fd2c9ccbcbdb5bad3f2f45fb (patch) | |
tree | 3fc36f70c42ba59b47ffc7509716e985b1debb92 | |
parent | c9e64903737db235846937e1cfec88d3b85d954f (diff) | |
download | qpid-python-a1344ada8df15243fd2c9ccbcbdb5bad3f2f45fb.tar.gz |
Temporarily reverting changes to signal handling; as checked in by r674107 it prevents the broker being shutdown.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@674482 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | qpid/cpp/src/qpidd.cpp | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/qpid/cpp/src/qpidd.cpp b/qpid/cpp/src/qpidd.cpp index 8e1b8c3d0a..64e64cab38 100644 --- a/qpid/cpp/src/qpidd.cpp +++ b/qpid/cpp/src/qpidd.cpp @@ -19,7 +19,6 @@ * */ #include "qpid/broker/Broker.h" -#include "qpid/broker/SignalHandler.h" #include "qpid/sys/posix/check.h" #include "qpid/broker/Daemon.h" #include "qpid/log/Statement.h" @@ -132,6 +131,12 @@ struct BootstrapOptions : public qpid::Options { shared_ptr<Broker> brokerPtr; auto_ptr<QpiddOptions> options; +void shutdownHandler(int /*signal*/){ + // Note: do not call any async-signal unsafe functions here. + // Do any extra shutdown actions in main() after broker->run() + brokerPtr->shutdown(); +} + struct QpiddDaemon : public Daemon { QpiddDaemon(std::string pidDir) : Daemon(pidDir) {} @@ -148,6 +153,7 @@ struct QpiddDaemon : public Daemon { uint16_t port=brokerPtr->getPort(); ready(port); // Notify parent. brokerPtr->run(); + brokerPtr.reset(); } }; @@ -234,7 +240,17 @@ int main(int argc, char* argv[]) } // Starting the broker. - broker::SignalHandler::setBroker(brokerPtr); // Set up signal handling. + + // Signal handling + signal(SIGINT,shutdownHandler); + signal(SIGTERM,shutdownHandler); + signal(SIGHUP,SIG_IGN); // TODO aconway 2007-07-18: reload config. + + signal(SIGCHLD,SIG_IGN); + signal(SIGTSTP,SIG_IGN); + signal(SIGTTOU,SIG_IGN); + signal(SIGTTIN,SIG_IGN); + if (options->daemon.daemon) { // For daemon mode replace default stderr with syslog. if (options->log.outputs.size() == 1 && options->log.outputs[0] == "stderr") { |