X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcutil%2Fsilcfsm.c;h=2ded983253aa77906cd439210b69306afe92116c;hb=e7b6c157b80152bf9fb9266e6bdd93f9fb0db776;hp=5e6fe2a5c7e001705c93255a160c7832e9baf3b2;hpb=f2dd07bb06c199bc35b8a69c0828f88c8e028db6;p=silc.git diff --git a/lib/silcutil/silcfsm.c b/lib/silcutil/silcfsm.c index 5e6fe2a5..2ded9832 100644 --- a/lib/silcutil/silcfsm.c +++ b/lib/silcutil/silcfsm.c @@ -770,12 +770,15 @@ void *silc_fsm_thread(void *context) /* We allocate new SilcSchedule for the FSM, as the old SilcSchedule cannot be used in this thread. Application may still use it if it wants but we use our own. */ - fsm->schedule = silc_schedule_init(0, old, silc_schedule_get_stack(old)); + fsm->schedule = silc_schedule_init(0, old, silc_schedule_get_stack(old), old); if (silc_unlikely(!fsm->schedule)) { fsm->schedule = old; return NULL; } + /* The new scheduler is a global scheduler in this thread */ + silc_schedule_set_global(fsm->schedule); + /* Start the FSM thread */ if (silc_unlikely(!silc_schedule_task_add_timeout(fsm->schedule, silc_fsm_run, fsm, 0, 0))) { @@ -787,6 +790,9 @@ void *silc_fsm_thread(void *context) /* Run the scheduler */ silc_schedule(fsm->schedule); + /* Reset global scheduler */ + silc_schedule_set_global(NULL); + /* Free resources */ silc_schedule_uninit(fsm->schedule);