aboutsummaryrefslogtreecommitdiff
path: root/liberty.c
diff options
context:
space:
mode:
Diffstat (limited to 'liberty.c')
-rw-r--r--liberty.c19
1 files changed, 6 insertions, 13 deletions
diff --git a/liberty.c b/liberty.c
index de57812..ec54567 100644
--- a/liberty.c
+++ b/liberty.c
@@ -1180,18 +1180,6 @@ async_run (struct async *self)
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-static bool
-async_manager_retry (struct async_manager *self, struct async *async)
-{
- if (async->cancelled)
- {
- if (async->destroy)
- async->destroy (async);
- return true;
- }
- return async_run (async);
-}
-
static struct async *
async_manager_dispatch_fetch (struct async_manager *self)
{
@@ -1227,7 +1215,12 @@ async_manager_dispatch (struct async_manager *self)
LIST_FOR_EACH (struct async, iter, self->delayed)
{
LIST_UNLINK (self->delayed, iter);
- if (!async_manager_retry (self, iter))
+ if (iter->cancelled)
+ {
+ if (iter->destroy)
+ iter->destroy (iter);
+ }
+ else if (!async_run (iter))
break;
}
}