Mark scheduler task unscheduled after silc_schedule_unset_listen_fd.
[silc.git] / lib / silcutil / unix / silcunixschedule.c
index 9aa2cdeb382624b07d1cf9c21d43cb108c476bd1..80e8fbf264e9a471a1732ef98b1c3c7546f8f65e 100644 (file)
@@ -4,7 +4,7 @@
 
   Author: Pekka Riikonen <priikone@silcnet.org>
 
-  Copyright (C) 1998 - 2007 Pekka Riikonen
+  Copyright (C) 1998 - 2008 Pekka Riikonen
 
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -288,6 +288,7 @@ SilcBool silc_schedule_internal_schedule_fd(SilcSchedule schedule,
       SILC_LOG_DEBUG(("epoll_ctl (DEL): %s", strerror(errno)));
       return FALSE;
     }
+    task->scheduled = FALSE;
     return TRUE;
   }
 
@@ -498,6 +499,7 @@ void silc_schedule_internal_signal_register(SilcSchedule schedule,
       signal_call[i].sig = sig;
       signal_call[i].callback = callback;
       signal_call[i].context = callback_context;
+      signal_call[i].schedule = schedule;
       signal_call[i].call = FALSE;
       signal(sig, silc_schedule_internal_sighandler);
       break;
@@ -527,6 +529,7 @@ void silc_schedule_internal_signal_unregister(SilcSchedule schedule,
       signal_call[i].sig = 0;
       signal_call[i].callback = NULL;
       signal_call[i].context = NULL;
+      signal_call[i].schedule = NULL;
       signal_call[i].call = FALSE;
       signal(sig, SIG_DFL);
     }