aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorxrs <xrs@mail36.net>2017-07-13 17:10:04 +0200
committerxrs <xrs@mail36.net>2017-07-13 17:10:04 +0200
commitf0bca33f0011119bc103ba0e4c5ab83de2f00199 (patch)
tree495524a29051d94a02b877b3a598e6adb53facc6 /src
parentcdf3b6745f83502a6fd246cb92a225f09bc4de0d (diff)
downloadgnunet-f0bca33f0011119bc103ba0e4c5ab83de2f00199.tar.gz
gnunet-f0bca33f0011119bc103ba0e4c5ab83de2f00199.zip
multicast: fix bugs
Diffstat (limited to 'src')
-rw-r--r--src/multicast/gnunet-service-multicast.c26
1 files changed, 15 insertions, 11 deletions
diff --git a/src/multicast/gnunet-service-multicast.c b/src/multicast/gnunet-service-multicast.c
index 39623e7b1..896f75c56 100644
--- a/src/multicast/gnunet-service-multicast.c
+++ b/src/multicast/gnunet-service-multicast.c
@@ -767,10 +767,11 @@ cadet_send_join_decision_cb (void *cls,
767 { 767 {
768 chn->join_status = JOIN_REFUSED; 768 chn->join_status = JOIN_REFUSED;
769 } 769 }
770
771 cadet_send_channel (chn, &hdcsn->header); 770 cadet_send_channel (chn, &hdcsn->header);
772 return GNUNET_NO; 771 return GNUNET_YES;
773 } 772 }
773
774 // return GNUNET_YES to continue the multihashmap_get iteration
774 return GNUNET_YES; 775 return GNUNET_YES;
775} 776}
776 777
@@ -845,13 +846,13 @@ cadet_notify_connect (void *cls,
845 struct GNUNET_CADET_Channel *channel, 846 struct GNUNET_CADET_Channel *channel,
846 const struct GNUNET_PeerIdentity *source) 847 const struct GNUNET_PeerIdentity *source)
847{ 848{
848 struct Channel *chn = GNUNET_malloc (sizeof *chn); 849 struct Channel *chn = GNUNET_malloc (sizeof (struct Channel));
849 chn->group = cls; 850 chn->group = cls;
850 chn->channel = channel; 851 chn->channel = channel;
851 chn->direction = DIR_INCOMING; 852 chn->direction = DIR_INCOMING;
852 chn->join_status = JOIN_NOT_ASKED; 853 chn->join_status = JOIN_NOT_ASKED;
853 854
854 GNUNET_CONTAINER_multihashmap_put (channels_in, &chn->group_pub_hash, chn, 855 GNUNET_CONTAINER_multihashmap_put (channels_in, &chn->group->pub_key_hash, chn,
855 GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE); 856 GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
856 return chn; 857 return chn;
857} 858}
@@ -1395,7 +1396,7 @@ handle_client_origin_start (void *cls,
1395 orig->cadet_port = GNUNET_CADET_open_port (cadet, 1396 orig->cadet_port = GNUNET_CADET_open_port (cadet,
1396 &grp->cadet_port_hash, 1397 &grp->cadet_port_hash,
1397 cadet_notify_connect, 1398 cadet_notify_connect,
1398 NULL, 1399 grp,
1399 cadet_notify_window_change, 1400 cadet_notify_window_change,
1400 cadet_notify_disconnect, 1401 cadet_notify_disconnect,
1401 cadet_handlers); 1402 cadet_handlers);
@@ -1458,7 +1459,7 @@ handle_client_member_join (void *cls,
1458 GNUNET_CRYPTO_ecdsa_key_get_public (&msg->member_key, &mem_pub_key); 1459 GNUNET_CRYPTO_ecdsa_key_get_public (&msg->member_key, &mem_pub_key);
1459 GNUNET_CRYPTO_hash (&mem_pub_key, sizeof (mem_pub_key), &mem_pub_key_hash); 1460 GNUNET_CRYPTO_hash (&mem_pub_key, sizeof (mem_pub_key), &mem_pub_key_hash);
1460 GNUNET_CRYPTO_hash (&msg->group_pub_key, sizeof (msg->group_pub_key), &pub_key_hash); 1461 GNUNET_CRYPTO_hash (&msg->group_pub_key, sizeof (msg->group_pub_key), &pub_key_hash);
1461 1462
1462 struct GNUNET_CONTAINER_MultiHashMap * 1463 struct GNUNET_CONTAINER_MultiHashMap *
1463 grp_mem = GNUNET_CONTAINER_multihashmap_get (group_members, &pub_key_hash); 1464 grp_mem = GNUNET_CONTAINER_multihashmap_get (group_members, &pub_key_hash);
1464 struct Member *mem = NULL; 1465 struct Member *mem = NULL;
@@ -1468,6 +1469,7 @@ handle_client_member_join (void *cls,
1468 { 1469 {
1469 mem = GNUNET_CONTAINER_multihashmap_get (grp_mem, &mem_pub_key_hash); 1470 mem = GNUNET_CONTAINER_multihashmap_get (grp_mem, &mem_pub_key_hash);
1470 } 1471 }
1472
1471 if (NULL == mem) 1473 if (NULL == mem)
1472 { 1474 {
1473 mem = GNUNET_new (struct Member); 1475 mem = GNUNET_new (struct Member);
@@ -1483,15 +1485,16 @@ handle_client_member_join (void *cls,
1483 grp->pub_key = msg->group_pub_key; 1485 grp->pub_key = msg->group_pub_key;
1484 grp->pub_key_hash = pub_key_hash; 1486 grp->pub_key_hash = pub_key_hash;
1485 group_set_cadet_port_hash (grp); 1487 group_set_cadet_port_hash (grp);
1486 1488
1487 if (NULL == grp_mem) 1489 if (NULL == grp_mem)
1488 { 1490 {
1489 grp_mem = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_YES); 1491 grp_mem = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_YES);
1490 GNUNET_CONTAINER_multihashmap_put (group_members, &grp->pub_key_hash, grp_mem, 1492 ret = GNUNET_CONTAINER_multihashmap_put (group_members, &grp->pub_key_hash, grp_mem,
1491 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST); 1493 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST);
1492 } 1494 }
1493 GNUNET_CONTAINER_multihashmap_put (grp_mem, &mem->pub_key_hash, mem, 1495 GNUNET_CONTAINER_multihashmap_put (grp_mem, &mem->pub_key_hash, mem,
1494 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST); 1496 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST);
1497
1495 GNUNET_CONTAINER_multihashmap_put (members, &grp->pub_key_hash, mem, 1498 GNUNET_CONTAINER_multihashmap_put (members, &grp->pub_key_hash, mem,
1496 GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE); 1499 GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
1497 } 1500 }
@@ -1508,7 +1511,7 @@ handle_client_member_join (void *cls,
1508 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 1511 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1509 "Client connected to group %s as member %s (%s).\n", 1512 "Client connected to group %s as member %s (%s).\n",
1510 GNUNET_h2s (&grp->pub_key_hash), 1513 GNUNET_h2s (&grp->pub_key_hash),
1511 GNUNET_h2s (&mem->pub_key_hash), 1514 GNUNET_h2s2 (&mem->pub_key_hash),
1512 str); 1515 str);
1513 GNUNET_free (str); 1516 GNUNET_free (str);
1514 1517
@@ -1636,7 +1639,8 @@ handle_client_join_decision (void *cls,
1636 "%p ..and member %s: %p\n", 1639 "%p ..and member %s: %p\n",
1637 grp, GNUNET_h2s (&member_key_hash), mem); 1640 grp, GNUNET_h2s (&member_key_hash), mem);
1638 } 1641 }
1639 if (NULL != mem) 1642
1643 if (NULL != mem)
1640 { /* Found local member */ 1644 { /* Found local member */
1641 client_send_join_decision (mem, hdcsn); 1645 client_send_join_decision (mem, hdcsn);
1642 } 1646 }