From 9b7716f9f2f8b3b4661ff07c891c8077e715062b Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Wed, 23 Mar 2022 05:19:09 +0100 Subject: [PATCH] fix #7151 --- src/testing/testing_api_cmd_change_auth.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/testing/testing_api_cmd_change_auth.c b/src/testing/testing_api_cmd_change_auth.c index 588eaa730..c3a60a1da 100644 --- a/src/testing/testing_api_cmd_change_auth.c +++ b/src/testing/testing_api_cmd_change_auth.c @@ -89,6 +89,22 @@ authchange_run (void *cls, } +/** + * Call GNUNET_CURL_fini(). Done as a separate task to + * ensure that all of the command's cleanups have been + * executed first. See #7151. + * + * @param cls a `struct GNUNET_CURL_Context *` to clean up. + */ +static void +deferred_cleanup_cb (void *cls) +{ + struct GNUNET_CURL_Context *ctx = cls; + + GNUNET_CURL_fini (ctx); +} + + /** * Cleanup the state from a "authchange" CMD. * @@ -104,7 +120,8 @@ authchange_cleanup (void *cls, (void) cmd; if (NULL != ss->old_ctx) { - GNUNET_CURL_fini (ss->old_ctx); + (void) GNUNET_SCHEDULER_add_now (&deferred_cleanup_cb, + ss->old_ctx); ss->old_ctx = NULL; } GNUNET_free (ss);