From 4bf1d97b60faba3b75e0964678b3834bd859475f Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Tue, 28 Feb 2017 20:24:24 +0100 Subject: allow destruction while iteration is active --- src/set/set_api.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/set') diff --git a/src/set/set_api.c b/src/set/set_api.c index 5b5b1b8ee..04a4e4910 100644 --- a/src/set/set_api.c +++ b/src/set/set_api.c @@ -349,6 +349,9 @@ handle_iter_done (void *cls, set->iteration_id++; iter (set->iterator_cls, NULL); + + if (GNUNET_YES == set->destroy_requested) + GNUNET_SET_destroy (set); } @@ -733,8 +736,7 @@ GNUNET_SET_destroy (struct GNUNET_SET_Handle *set) /* destroying set while iterator is active is currently not supported; we should expand the API to allow clients to explicitly cancel the iteration! */ - GNUNET_assert (NULL == set->iterator); - if (NULL != set->ops_head) + if ( (NULL != set->ops_head) || (NULL != set->iterator) ) { LOG (GNUNET_ERROR_TYPE_DEBUG, "Set operations are pending, delaying set destruction\n"); -- cgit v1.2.3