diff options
author | Sree Harsha Totakura <totakura@in.tum.de> | 2013-09-30 12:55:03 +0000 |
---|---|---|
committer | Sree Harsha Totakura <totakura@in.tum.de> | 2013-09-30 12:55:03 +0000 |
commit | 87ed5554b390cbf16a9bd15c4aec13ab34d7f080 (patch) | |
tree | 57716c8c85d0d8f8e3463f5a1b766f51b4f22405 /src/testbed/gnunet-service-testbed_barriers.c | |
parent | ec7d72a656a180ecdd25507439add2656d5bcbae (diff) | |
download | gnunet-87ed5554b390cbf16a9bd15c4aec13ab34d7f080.tar.gz gnunet-87ed5554b390cbf16a9bd15c4aec13ab34d7f080.zip |
- fix misc. memleaks
Diffstat (limited to 'src/testbed/gnunet-service-testbed_barriers.c')
-rw-r--r-- | src/testbed/gnunet-service-testbed_barriers.c | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/src/testbed/gnunet-service-testbed_barriers.c b/src/testbed/gnunet-service-testbed_barriers.c index c1d5036eb..bffafd7ae 100644 --- a/src/testbed/gnunet-service-testbed_barriers.c +++ b/src/testbed/gnunet-service-testbed_barriers.c | |||
@@ -330,7 +330,10 @@ cleanup_clientctx (struct ClientCtx *ctx) | |||
330 | struct MessageQueue *mq; | 330 | struct MessageQueue *mq; |
331 | 331 | ||
332 | if (NULL != ctx->client) | 332 | if (NULL != ctx->client) |
333 | { | ||
334 | GNUNET_SERVER_client_set_user_context_ (ctx->client, NULL, 0); | ||
333 | GNUNET_SERVER_client_drop (ctx->client); | 335 | GNUNET_SERVER_client_drop (ctx->client); |
336 | } | ||
334 | if (NULL != ctx->tx) | 337 | if (NULL != ctx->tx) |
335 | GNUNET_SERVER_notify_transmit_ready_cancel (ctx->tx); | 338 | GNUNET_SERVER_notify_transmit_ready_cancel (ctx->tx); |
336 | if (NULL != (mq = ctx->mq_head)) | 339 | if (NULL != (mq = ctx->mq_head)) |
@@ -482,11 +485,11 @@ handle_barrier_wait (void *cls, struct GNUNET_SERVER_Client *client, | |||
482 | (void) memcpy (name, msg->name, name_len); | 485 | (void) memcpy (name, msg->name, name_len); |
483 | LOG_DEBUG ("Received BARRIER_WAIT for barrier `%s'\n", name); | 486 | LOG_DEBUG ("Received BARRIER_WAIT for barrier `%s'\n", name); |
484 | GNUNET_CRYPTO_hash (name, name_len, &key); | 487 | GNUNET_CRYPTO_hash (name, name_len, &key); |
488 | GNUNET_free (name); | ||
485 | if (NULL == (barrier = GNUNET_CONTAINER_multihashmap_get (barrier_map, &key))) | 489 | if (NULL == (barrier = GNUNET_CONTAINER_multihashmap_get (barrier_map, &key))) |
486 | { | 490 | { |
487 | GNUNET_break (0); | 491 | GNUNET_break (0); |
488 | GNUNET_SERVER_receive_done (client, GNUNET_SYSERR); | 492 | GNUNET_SERVER_receive_done (client, GNUNET_SYSERR); |
489 | GNUNET_free (name); | ||
490 | return; | 493 | return; |
491 | } | 494 | } |
492 | client_ctx = GNUNET_SERVER_client_get_user_context (client, struct ClientCtx); | 495 | client_ctx = GNUNET_SERVER_client_get_user_context (client, struct ClientCtx); |
@@ -556,12 +559,40 @@ GST_barriers_init (struct GNUNET_CONFIGURATION_Handle *cfg) | |||
556 | 559 | ||
557 | 560 | ||
558 | /** | 561 | /** |
562 | * Iterator over hash map entries. | ||
563 | * | ||
564 | * @param cls closure | ||
565 | * @param key current key code | ||
566 | * @param value value in the hash map | ||
567 | * @return #GNUNET_YES if we should continue to | ||
568 | * iterate, | ||
569 | * #GNUNET_NO if not. | ||
570 | */ | ||
571 | static int | ||
572 | barrier_destroy_iterator (void *cls, | ||
573 | const struct GNUNET_HashCode *key, | ||
574 | void *value) | ||
575 | { | ||
576 | struct Barrier *barrier = value; | ||
577 | |||
578 | GNUNET_assert (NULL != barrier); | ||
579 | cancel_wrappers (barrier); | ||
580 | remove_barrier (barrier); | ||
581 | return GNUNET_YES; | ||
582 | } | ||
583 | |||
584 | |||
585 | /** | ||
559 | * Function to stop the barrier service | 586 | * Function to stop the barrier service |
560 | */ | 587 | */ |
561 | void | 588 | void |
562 | GST_barriers_destroy () | 589 | GST_barriers_destroy () |
563 | { | 590 | { |
564 | GNUNET_assert (NULL != barrier_map); | 591 | GNUNET_assert (NULL != barrier_map); |
592 | GNUNET_assert (GNUNET_SYSERR != | ||
593 | GNUNET_CONTAINER_multihashmap_iterate (barrier_map, | ||
594 | &barrier_destroy_iterator, | ||
595 | NULL)); | ||
565 | GNUNET_CONTAINER_multihashmap_destroy (barrier_map); | 596 | GNUNET_CONTAINER_multihashmap_destroy (barrier_map); |
566 | GNUNET_assert (NULL != ctx); | 597 | GNUNET_assert (NULL != ctx); |
567 | GNUNET_SERVICE_stop (ctx); | 598 | GNUNET_SERVICE_stop (ctx); |