diff options
author | Tobias Brunner <tobias@strongswan.org> | 2015-11-19 11:21:48 +0100 |
---|---|---|
committer | Tobias Brunner <tobias@strongswan.org> | 2015-11-23 11:37:19 +0100 |
commit | 88b85e022a4dde71fa1829ffbf948be2d5d1987f (patch) | |
tree | be5bff68c667c1d0d686808bfcc2962c774c5af3 /src/libstrongswan/utils | |
parent | b675909662c20bd5c3eb28707e44f42d4ba60b89 (diff) | |
download | strongswan-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.c | 5 |
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 |