diff options
author | Gabor X Toth <*@tg-x.net> | 2016-08-20 17:56:20 +0000 |
---|---|---|
committer | Gabor X Toth <*@tg-x.net> | 2016-08-20 17:56:20 +0000 |
commit | ce1a6574b9f59807b1751ed2f5b85bdc70c6aef0 (patch) | |
tree | 489961e1e220bdeda13e74238908f7c8af2c8177 /src/multicast | |
parent | 17b510b1a6d6ccf8ca071e3ea96128335caa84d3 (diff) | |
download | gnunet-ce1a6574b9f59807b1751ed2f5b85bdc70c6aef0.tar.gz gnunet-ce1a6574b9f59807b1751ed2f5b85bdc70c6aef0.zip |
multicast: close cadet port
Diffstat (limited to 'src/multicast')
-rw-r--r-- | src/multicast/gnunet-service-multicast.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/multicast/gnunet-service-multicast.c b/src/multicast/gnunet-service-multicast.c index 780e8ceee..af530e27a 100644 --- a/src/multicast/gnunet-service-multicast.c +++ b/src/multicast/gnunet-service-multicast.c | |||
@@ -251,6 +251,11 @@ struct Origin | |||
251 | struct GNUNET_CRYPTO_EddsaPrivateKey priv_key; | 251 | struct GNUNET_CRYPTO_EddsaPrivateKey priv_key; |
252 | 252 | ||
253 | /** | 253 | /** |
254 | * CADET port. | ||
255 | */ | ||
256 | struct GNUNET_CADET_Port *cadet_port; | ||
257 | |||
258 | /** | ||
254 | * Last message fragment ID sent to the group. | 259 | * Last message fragment ID sent to the group. |
255 | */ | 260 | */ |
256 | uint64_t max_fragment_id; | 261 | uint64_t max_fragment_id; |
@@ -363,6 +368,12 @@ cleanup_origin (struct Origin *orig) | |||
363 | { | 368 | { |
364 | struct Group *grp = &orig->grp; | 369 | struct Group *grp = &orig->grp; |
365 | GNUNET_CONTAINER_multihashmap_remove (origins, &grp->pub_key_hash, orig); | 370 | GNUNET_CONTAINER_multihashmap_remove (origins, &grp->pub_key_hash, orig); |
371 | if (NULL != orig->cadet_port) | ||
372 | { | ||
373 | GNUNET_CADET_close_port (orig->cadet_port); | ||
374 | orig->cadet_port = NULL; | ||
375 | } | ||
376 | GNUNET_free (orig); | ||
366 | } | 377 | } |
367 | 378 | ||
368 | 379 | ||
@@ -391,6 +402,7 @@ cleanup_member (struct Member *mem) | |||
391 | mem->join_dcsn = NULL; | 402 | mem->join_dcsn = NULL; |
392 | } | 403 | } |
393 | GNUNET_CONTAINER_multihashmap_remove (members, &grp->pub_key_hash, mem); | 404 | GNUNET_CONTAINER_multihashmap_remove (members, &grp->pub_key_hash, mem); |
405 | GNUNET_free (mem); | ||
394 | } | 406 | } |
395 | 407 | ||
396 | 408 | ||
@@ -403,8 +415,6 @@ cleanup_group (struct Group *grp) | |||
403 | (GNUNET_YES == grp->is_origin) | 415 | (GNUNET_YES == grp->is_origin) |
404 | ? cleanup_origin ((struct Origin *) grp) | 416 | ? cleanup_origin ((struct Origin *) grp) |
405 | : cleanup_member ((struct Member *) grp); | 417 | : cleanup_member ((struct Member *) grp); |
406 | |||
407 | GNUNET_free (grp); | ||
408 | } | 418 | } |
409 | 419 | ||
410 | 420 | ||
@@ -951,7 +961,6 @@ group_set_cadet_port_hash (struct Group *grp) | |||
951 | grp->pub_key, | 961 | grp->pub_key, |
952 | GNUNET_APPLICATION_TYPE_MULTICAST, | 962 | GNUNET_APPLICATION_TYPE_MULTICAST, |
953 | }; | 963 | }; |
954 | |||
955 | GNUNET_CRYPTO_hash (&port, sizeof (port), &grp->cadet_port_hash); | 964 | GNUNET_CRYPTO_hash (&port, sizeof (port), &grp->cadet_port_hash); |
956 | } | 965 | } |
957 | 966 | ||
@@ -988,10 +997,10 @@ client_recv_origin_start (void *cls, struct GNUNET_SERVER_Client *client, | |||
988 | 997 | ||
989 | GNUNET_CONTAINER_multihashmap_put (origins, &grp->pub_key_hash, orig, | 998 | GNUNET_CONTAINER_multihashmap_put (origins, &grp->pub_key_hash, orig, |
990 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST); | 999 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST); |
991 | group_set_cadet_port_hash (grp); | ||
992 | GNUNET_CADET_open_port (cadet, &grp->cadet_port_hash, | ||
993 | cadet_notify_channel_new, NULL); | ||
994 | 1000 | ||
1001 | group_set_cadet_port_hash (grp); | ||
1002 | orig->cadet_port = GNUNET_CADET_open_port (cadet, &grp->cadet_port_hash, | ||
1003 | cadet_notify_channel_new, NULL); | ||
995 | } | 1004 | } |
996 | else | 1005 | else |
997 | { | 1006 | { |