summaryrefslogtreecommitdiffstats
path: root/maildrop/alarmsleep.C
diff options
context:
space:
mode:
authorSam Varshavchik2021-05-17 22:45:55 -0400
committerSam Varshavchik2021-05-19 08:03:44 -0400
commitf47a71576c377269f5c5ca6156b2f319256e2738 (patch)
tree4b7a91e9ab6b3f52f5667e1f1a3abff1841f0b2f /maildrop/alarmsleep.C
parent9c4bd37a0adc2ebbe1ad35d6317da02e4bbfcfb2 (diff)
downloadcourier-libs-f47a71576c377269f5c5ca6156b2f319256e2738.tar.bz2
maildrop: clean up a dotlock file if exited while it is held.
Implement exit() by throwing an exception, which will wind up and clean up the dotlock. Catch the exception and exit(), after everything gets cleaned up.
Diffstat (limited to 'maildrop/alarmsleep.C')
-rw-r--r--maildrop/alarmsleep.C6
1 files changed, 5 insertions, 1 deletions
diff --git a/maildrop/alarmsleep.C b/maildrop/alarmsleep.C
index 4b4074a..610258e 100644
--- a/maildrop/alarmsleep.C
+++ b/maildrop/alarmsleep.C
@@ -5,10 +5,14 @@
AlarmSleep::AlarmSleep(unsigned nseconds) : flag(0)
{
+ sigset_t ss;
+
+ sigemptyset(&ss);
+
Set(nseconds);
do
{
- sigpause(0);
+ sigsuspend(&ss);
} while (!flag);
Cancel();
}