aboutsummaryrefslogtreecommitdiff
path: root/src/consensus/consensus_api.c
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2013-03-07 14:12:11 +0000
committerFlorian Dold <florian.dold@gmail.com>2013-03-07 14:12:11 +0000
commit159e38f1ed94c6b44ca20bc2a78fd5cad7027fd0 (patch)
treee4e60aec526c9a0ffbe3dd69896d394587e8586a /src/consensus/consensus_api.c
parent1a17d075effa5fbc3b3521ab0d15b2d035599969 (diff)
downloadgnunet-159e38f1ed94c6b44ca20bc2a78fd5cad7027fd0.tar.gz
gnunet-159e38f1ed94c6b44ca20bc2a78fd5cad7027fd0.zip
consensus now implemented with primitive conclusion group selection
Diffstat (limited to 'src/consensus/consensus_api.c')
-rw-r--r--src/consensus/consensus_api.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/consensus/consensus_api.c b/src/consensus/consensus_api.c
index 7ebb0a9d9..e970040e1 100644
--- a/src/consensus/consensus_api.c
+++ b/src/consensus/consensus_api.c
@@ -139,6 +139,12 @@ struct GNUNET_CONSENSUS_Handle
139 139
140 struct QueuedMessage *messages_head; 140 struct QueuedMessage *messages_head;
141 struct QueuedMessage *messages_tail; 141 struct QueuedMessage *messages_tail;
142
143 /**
144 * GNUNET_YES when currently in a section where destroy may not be
145 * called.
146 */
147 int may_not_destroy;
142}; 148};
143 149
144 150
@@ -279,7 +285,9 @@ handle_conclude_done (struct GNUNET_CONSENSUS_Handle *consensus,
279 struct GNUNET_CONSENSUS_ConcludeDoneMessage *msg) 285 struct GNUNET_CONSENSUS_ConcludeDoneMessage *msg)
280{ 286{
281 GNUNET_assert (NULL != consensus->conclude_cb); 287 GNUNET_assert (NULL != consensus->conclude_cb);
288 consensus->may_not_destroy = GNUNET_YES;
282 consensus->conclude_cb (consensus->conclude_cls, NULL); 289 consensus->conclude_cb (consensus->conclude_cls, NULL);
290 consensus->may_not_destroy = GNUNET_NO;
283 consensus->conclude_cb = NULL; 291 consensus->conclude_cb = NULL;
284} 292}
285 293
@@ -523,6 +531,11 @@ GNUNET_CONSENSUS_conclude (struct GNUNET_CONSENSUS_Handle *consensus,
523void 531void
524GNUNET_CONSENSUS_destroy (struct GNUNET_CONSENSUS_Handle *consensus) 532GNUNET_CONSENSUS_destroy (struct GNUNET_CONSENSUS_Handle *consensus)
525{ 533{
534 if (GNUNET_YES == consensus->may_not_destroy)
535 {
536 LOG (GNUNET_ERROR_TYPE_ERROR, "destroy may not be called right now\n");
537 GNUNET_assert (0);
538 }
526 if (consensus->client != NULL) 539 if (consensus->client != NULL)
527 { 540 {
528 GNUNET_CLIENT_disconnect (consensus->client); 541 GNUNET_CLIENT_disconnect (consensus->client);