runqueue should cal the complete handler from more places
authorJohn Crispin <blogic@openwrt.org>
Tue, 2 Jul 2013 16:31:25 +0000 (18:31 +0200)
committerJohn Crispin <blogic@openwrt.org>
Tue, 2 Jul 2013 16:33:46 +0000 (18:33 +0200)
Signed-off-by: John Crispin <blogic@openwrt.org>
runqueue.c

index 1bdb48e157e88b611846f91819e3426a69198f76..189a00555e12cb43a087dce5d2fd4783e1e23344 100644 (file)
@@ -186,8 +186,6 @@ void runqueue_task_kill(struct runqueue_task *t)
        runqueue_task_complete(t);
        if (running && t->type->kill)
                t->type->kill(q, t);
-       if (t->complete)
-               t->complete(q, t);
 
        runqueue_start_next(q);
 }
@@ -205,6 +203,8 @@ void runqueue_resume(struct runqueue *q)
 
 void runqueue_task_complete(struct runqueue_task *t)
 {
+       struct runqueue *q = t->q;
+
        if (!t->queued)
                return;
 
@@ -215,6 +215,8 @@ void runqueue_task_complete(struct runqueue_task *t)
        t->queued = false;
        t->running = false;
        t->cancelled = false;
+       if (t->complete)
+               t->complete(q, t);
        runqueue_start_next(t->q);
 }