diff options
author | Florian Dold <florian.dold@gmail.com> | 2017-02-28 20:24:24 +0100 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2017-02-28 20:24:24 +0100 |
commit | 4bf1d97b60faba3b75e0964678b3834bd859475f (patch) | |
tree | 2546bebaac685ed2887f490935461e3379b85b8d /src/set/set_api.c | |
parent | 90f6407e2ed835241c29bbd8c57bac47dd76e59c (diff) |
allow destruction while iteration is active
Diffstat (limited to 'src/set/set_api.c')
-rw-r--r-- | src/set/set_api.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/set/set_api.c b/src/set/set_api.c index 5b5b1b8eec..04a4e49108 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"); |