aboutsummaryrefslogtreecommitdiff
path: root/src/libutil/util.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/libutil/util.cc')
-rw-r--r--src/libutil/util.cc28
1 files changed, 16 insertions, 12 deletions
diff --git a/src/libutil/util.cc b/src/libutil/util.cc
index 52608ac2a..ca4edc2cd 100644
--- a/src/libutil/util.cc
+++ b/src/libutil/util.cc
@@ -1197,18 +1197,22 @@ static void signalHandlerThread(sigset_t set)
int signal = 0;
sigwait(&set, &signal);
- if (signal == SIGINT || signal == SIGTERM || signal == SIGHUP) {
- _isInterrupted = 1;
-
- {
- auto interruptCallbacks(_interruptCallbacks.lock());
- for (auto & callback : *interruptCallbacks) {
- try {
- callback();
- } catch (...) {
- ignoreException();
- }
- }
+ if (signal == SIGINT || signal == SIGTERM || signal == SIGHUP)
+ triggerInterrupt();
+ }
+}
+
+void triggerInterrupt()
+{
+ _isInterrupted = 1;
+
+ {
+ auto interruptCallbacks(_interruptCallbacks.lock());
+ for (auto & callback : *interruptCallbacks) {
+ try {
+ callback();
+ } catch (...) {
+ ignoreException();
}
}
}