From af628f3f58cd9d3cf5c1708cdc81fd743aea8076 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Thu, 5 May 2011 13:52:09 +0000 Subject: fix --- src/datastore/plugin_datastore_sqlite.c | 52 +++++++++++++++++---------------- 1 file changed, 27 insertions(+), 25 deletions(-) (limited to 'src') diff --git a/src/datastore/plugin_datastore_sqlite.c b/src/datastore/plugin_datastore_sqlite.c index 8ae8f54af..3267869d5 100644 --- a/src/datastore/plugin_datastore_sqlite.c +++ b/src/datastore/plugin_datastore_sqlite.c @@ -884,11 +884,6 @@ sqlite_plugin_get_key (void *cls, struct ReplCtx { - /** - * Plugin handle. - */ - struct Plugin *plugin; - /** * Function to call for the result (or the NULL). */ @@ -898,6 +893,16 @@ struct ReplCtx * Closure for proc. */ void *proc_cls; + + /** + * UID to use. + */ + uint64_t uid; + + /** + * Yes if UID was set. + */ + int have_uid; }; @@ -932,7 +937,6 @@ repl_proc (void *cls, uint64_t uid) { struct ReplCtx *rc = cls; - struct Plugin *plugin = rc->plugin; int ret; ret = rc->proc (rc->proc_cls, @@ -940,24 +944,10 @@ repl_proc (void *cls, size, data, type, priority, anonymity, expiration, uid); - if (NULL != key) + if (key != NULL) { - sqlite3_bind_int64 (plugin->updRepl, 1, uid); - if (SQLITE_DONE != sqlite3_step (plugin->updRepl)) - { - LOG_SQLITE (plugin, NULL, - GNUNET_ERROR_TYPE_ERROR | - GNUNET_ERROR_TYPE_BULK, "sqlite3_step"); - if (SQLITE_OK != sqlite3_reset (plugin->updRepl)) - LOG_SQLITE (plugin, NULL, - GNUNET_ERROR_TYPE_ERROR | - GNUNET_ERROR_TYPE_BULK, "sqlite3_reset"); - return GNUNET_SYSERR; - } - if (SQLITE_OK != sqlite3_reset (plugin->delRow)) - LOG_SQLITE (plugin, NULL, - GNUNET_ERROR_TYPE_ERROR | - GNUNET_ERROR_TYPE_BULK, "sqlite3_reset"); + rc->uid = uid; + rc->have_uid = GNUNET_YES; } return ret; } @@ -985,10 +975,22 @@ sqlite_plugin_get_replication (void *cls, "sqlite", "Getting random block based on replication order.\n"); #endif - rc.plugin = plugin; + rc.have_uid = GNUNET_NO; rc.proc = proc; rc.proc_cls = proc_cls; - execute_get (plugin, plugin->selRepl, &repl_proc, &rc); + execute_get (plugin, plugin->selRepl, &repl_proc, &rc); + if (GNUNET_YES == rc.have_uid) + { + sqlite3_bind_int64 (plugin->updRepl, 1, rc.uid); + if (SQLITE_DONE != sqlite3_step (plugin->updRepl)) + LOG_SQLITE (plugin, NULL, + GNUNET_ERROR_TYPE_ERROR | + GNUNET_ERROR_TYPE_BULK, "sqlite3_step"); + if (SQLITE_OK != sqlite3_reset (plugin->updRepl)) + LOG_SQLITE (plugin, NULL, + GNUNET_ERROR_TYPE_ERROR | + GNUNET_ERROR_TYPE_BULK, "sqlite3_reset"); + } } -- cgit v1.2.3