From 88bf2770df46cdb1039818c1e52c25e106f0f5e9 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Thu, 19 Apr 2012 19:06:06 +0000 Subject: [PATCH] -fix --- src/datastore/datastore_api.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/datastore/datastore_api.c b/src/datastore/datastore_api.c index f4096c665..f9d4dff7e 100644 --- a/src/datastore/datastore_api.c +++ b/src/datastore/datastore_api.c @@ -269,6 +269,22 @@ GNUNET_DATASTORE_connect (const struct GNUNET_CONFIGURATION_Handle *cfg) } +/** + * Task used by 'transmit_drop' to disconnect the datastore. + * + * @param cls the datastore handle + * @param tc scheduler context + */ +static void +disconnect_after_drop (void *cls, + const struct GNUNET_SCHEDULER_TaskContext *tc) +{ + struct GNUNET_DATASTORE_Handle *h = cls; + + GNUNET_DATASTORE_disconnect (h, GNUNET_NO); +} + + /** * Transmit DROP message to datastore service. * @@ -287,14 +303,16 @@ transmit_drop (void *cls, size_t size, void *buf) { LOG (GNUNET_ERROR_TYPE_WARNING, _("Failed to transmit request to drop database.\n")); - GNUNET_DATASTORE_disconnect (h, GNUNET_NO); + GNUNET_SCHEDULER_add_continuation (&disconnect_after_drop, h, + GNUNET_SCHEDULER_REASON_PREREQ_DONE); return 0; } GNUNET_assert (size >= sizeof (struct GNUNET_MessageHeader)); hdr = buf; hdr->size = htons (sizeof (struct GNUNET_MessageHeader)); hdr->type = htons (GNUNET_MESSAGE_TYPE_DATASTORE_DROP); - GNUNET_DATASTORE_disconnect (h, GNUNET_NO); + GNUNET_SCHEDULER_add_continuation (&disconnect_after_drop, h, + GNUNET_SCHEDULER_REASON_PREREQ_DONE); return sizeof (struct GNUNET_MessageHeader); } -- 2.25.1