aboutsummaryrefslogtreecommitdiffstats
path: root/src/libstrongswan/utils
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2015-11-19 11:21:48 +0100
committerTobias Brunner <tobias@strongswan.org>2015-11-23 11:37:19 +0100
commit88b85e022a4dde71fa1829ffbf948be2d5d1987f (patch)
treebe5bff68c667c1d0d686808bfcc2962c774c5af3 /src/libstrongswan/utils
parentb675909662c20bd5c3eb28707e44f42d4ba60b89 (diff)
downloadstrongswan-88b85e022a4dde71fa1829ffbf948be2d5d1987f.tar.bz2
strongswan-88b85e022a4dde71fa1829ffbf948be2d5d1987f.tar.xz
sigwaitinfo() may fail with EINTR if interrupted by an unblocked signal not in the set
Fixes #1213.
Diffstat (limited to 'src/libstrongswan/utils')
-rw-r--r--src/libstrongswan/utils/utils.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/libstrongswan/utils/utils.c b/src/libstrongswan/utils/utils.c
index 4e86165cf..40cb43d90 100644
--- a/src/libstrongswan/utils/utils.c
+++ b/src/libstrongswan/utils/utils.c
@@ -124,7 +124,10 @@ void wait_sigint()
sigaddset(&set, SIGTERM);
sigprocmask(SIG_BLOCK, &set, NULL);
- sigwaitinfo(&set, NULL);
+ while (sigwaitinfo(&set, NULL) == -1 && errno == EINTR)
+ {
+ /* wait for signal */
+ }
}
#ifndef HAVE_SIGWAITINFO