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/charon-cmd/charon-cmd.c | |
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/charon-cmd/charon-cmd.c')
-rw-r--r-- | src/charon-cmd/charon-cmd.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/charon-cmd/charon-cmd.c b/src/charon-cmd/charon-cmd.c index b8f943f51..d3b31cc0d 100644 --- a/src/charon-cmd/charon-cmd.c +++ b/src/charon-cmd/charon-cmd.c @@ -115,6 +115,10 @@ static int run() sig = sigwaitinfo(&set, NULL); if (sig == -1) { + if (errno == EINTR) + { /* ignore signals we didn't wait for */ + continue; + } DBG1(DBG_DMN, "waiting for signal failed: %s", strerror(errno)); return 1; } @@ -152,11 +156,6 @@ static int run() charon->bus->alert(charon->bus, ALERT_SHUTDOWN_SIGNAL, sig); return 1; } - default: - { - DBG1(DBG_DMN, "unknown signal %d received. Ignored", sig); - break; - } } } } |