Unlock signals when calling signal callback.
authorPekka Riikonen <priikone@silcnet.org>
Sun, 24 Jun 2007 14:12:26 +0000 (14:12 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Sun, 24 Jun 2007 14:12:26 +0000 (14:12 +0000)
lib/silcutil/unix/silcunixschedule.c

index e661ca6461da95a589cdf25cf4bee93a22c50a85..137d52def8d784e8ddd55dc69f2fd6a661fe81b2 100644 (file)
@@ -459,6 +459,8 @@ static void silc_schedule_internal_sighandler(int signal)
 {
   int i;
 
+  SILC_LOG_DEBUG(("Start"));
+
   for (i = 0; i < SIGNAL_COUNT; i++) {
     if (signal_call[i].sig == signal) {
       signal_call[i].call = TRUE;
@@ -548,11 +550,13 @@ void silc_schedule_internal_signals_call(SilcSchedule schedule, void *context)
         signal_call[i].callback) {
       SILC_LOG_DEBUG(("Calling signal %d callback",
                      signal_call[i].sig));
+      silc_schedule_internal_signals_unblock(schedule, context);
       signal_call[i].callback(schedule, internal->app_context,
                              SILC_TASK_INTERRUPT,
                              signal_call[i].sig,
                              signal_call[i].context);
       signal_call[i].call = FALSE;
+      silc_schedule_internal_signals_block(schedule, context);
     }
   }