From: Christian Grothoff Date: Thu, 19 Apr 2012 19:06:06 +0000 (+0000) Subject: -fix X-Git-Tag: initial-import-from-subversion-38251~13863 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=88bf2770df46cdb1039818c1e52c25e106f0f5e9;p=oweals%2Fgnunet.git -fix --- 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); }