Fixed uninit to lock scheduler correctly on dispatch.
authorPekka Riikonen <priikone@silcnet.org>
Thu, 12 Dec 2002 21:26:11 +0000 (21:26 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Thu, 12 Dec 2002 21:26:11 +0000 (21:26 +0000)
CHANGES
lib/silcutil/silcschedule.c

diff --git a/CHANGES b/CHANGES
index 918d213b38b13351585fdfb2ba5fbb40eda813f1..d99812e98cb2221bf6430d268e75f2eb4e81e60c 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -7,6 +7,10 @@ Thu Dec 12 23:22:50 EET 2002  Pekka Riikonen <priikone@silcnet.org>
          the mutex is locked/unlcoked already.  Affected file
          lib/silcutil/unix/silcunixmutex.c.
 
+       * Fixed locking in silc_schedule_uninit.  It didn't lock
+         when dispatching timeout tasks.  Affected file is
+         lib/silcutil/silcschedule.c.
+
 Thu Dec 12 12:06:59 CET 2002 Jochen Eisinger <c0ffee@penguin-breeder.org>
 
        * Don't print signed messages when sending failed.  Affected files
index 515d3a9fc8134e92567fb407957f1c0c3cd30510..6b342b9f26414a4b0135a23d21b862582d989764 100644 (file)
@@ -275,16 +275,16 @@ bool silc_schedule_uninit(SilcSchedule schedule)
     return FALSE;
 
   /* Dispatch all timeouts before going away */
+  SILC_SCHEDULE_LOCK(schedule);
   silc_mutex_lock(schedule->timeout_queue->lock);
   silc_schedule_dispatch_timeout(schedule, TRUE);
   silc_mutex_unlock(schedule->timeout_queue->lock);
+  SILC_SCHEDULE_UNLOCK(schedule);
 
   /* Deliver signals before going away */
   if (schedule->signal_tasks) {
-    SILC_SCHEDULE_UNLOCK(schedule);
     silc_schedule_internal_signals_call(schedule->internal, schedule);
     schedule->signal_tasks = FALSE;
-    SILC_SCHEDULE_LOCK(schedule);
   }
 
   /* Unregister all tasks */