aboutsummaryrefslogtreecommitdiff
path: root/src/datastore/plugin_datastore_sqlite.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/datastore/plugin_datastore_sqlite.c')
-rw-r--r--src/datastore/plugin_datastore_sqlite.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/src/datastore/plugin_datastore_sqlite.c b/src/datastore/plugin_datastore_sqlite.c
index 9356b79edc..78b4533499 100644
--- a/src/datastore/plugin_datastore_sqlite.c
+++ b/src/datastore/plugin_datastore_sqlite.c
@@ -131,6 +131,11 @@ struct Plugin
* Handle for pending get request.
*/
struct GNUNET_STATISTICS_GetHandle *stat_get;
+
+ /**
+ * Pending task with scheduler for running the next request.
+ */
+ GNUNET_SCHEDULER_TaskIdentifier next_task;
/**
* How much data are we currently storing
@@ -540,9 +545,9 @@ sqlite_next_request_cont (void *cls,
struct GNUNET_TIME_Absolute expiration;
const GNUNET_HashCode *key;
const void *data;
-
-
+
plugin = nc->plugin;
+ plugin->next_task = GNUNET_SCHEDULER_NO_TASK;
if ( (GNUNET_YES == nc->end_it) ||
(GNUNET_OK != (nc->prep(nc->prep_cls,
nc))) )
@@ -668,10 +673,9 @@ sqlite_next_request (void *next_cls,
if (GNUNET_YES == end_it)
nc->end_it = GNUNET_YES;
- GNUNET_SCHEDULER_add_continuation (nc->plugin->env->sched,
- &sqlite_next_request_cont,
- nc,
- GNUNET_SCHEDULER_REASON_PREREQ_DONE);
+ nc->plugin->next_task = GNUNET_SCHEDULER_add_now (nc->plugin->env->sched,
+ &sqlite_next_request_cont,
+ nc);
}
@@ -1646,6 +1650,12 @@ libgnunet_plugin_datastore_sqlite_done (void *cls)
GNUNET_STATISTICS_get_cancel (plugin->stat_get);
plugin->stat_get = NULL;
}
+ if (plugin->next_task != GNUNET_SCHEDULER_NO_TASK)
+ {
+ GNUNET_SCHEDULER_cancel (plugin->env->sched,
+ plugin->next_task);
+ plugin->next_task = GNUNET_SCHEDULER_NO_TASK;
+ }
fn = NULL;
if (plugin->drop_on_shutdown)
fn = GNUNET_strdup (plugin->fn);