aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/psycstore/psycstore_api.c3
-rw-r--r--src/social/gnunet-service-social.c25
2 files changed, 20 insertions, 8 deletions
diff --git a/src/psycstore/psycstore_api.c b/src/psycstore/psycstore_api.c
index 16f4a1ae9..5a4865dce 100644
--- a/src/psycstore/psycstore_api.c
+++ b/src/psycstore/psycstore_api.c
@@ -362,6 +362,9 @@ do_connect (struct GNUNET_PSYCSTORE_Handle *h)
362static void 362static void
363reconnect (void *cls) 363reconnect (void *cls)
364{ 364{
365 struct GNUNET_PSYCSTORE_Handle *h = cls;
366
367 h->reconnect_task = NULL;
365 do_connect (cls); 368 do_connect (cls);
366} 369}
367 370
diff --git a/src/social/gnunet-service-social.c b/src/social/gnunet-service-social.c
index 5b2a8ba9b..520df20b9 100644
--- a/src/social/gnunet-service-social.c
+++ b/src/social/gnunet-service-social.c
@@ -503,17 +503,18 @@ cleanup_guest (struct Guest *gst)
503 struct GNUNET_CONTAINER_MultiHashMap * 503 struct GNUNET_CONTAINER_MultiHashMap *
504 plc_gst = GNUNET_CONTAINER_multihashmap_get (place_guests, 504 plc_gst = GNUNET_CONTAINER_multihashmap_get (place_guests,
505 &plc->pub_key_hash); 505 &plc->pub_key_hash);
506 GNUNET_assert (NULL != plc_gst); 506 if (NULL != plc_gst)
507 GNUNET_CONTAINER_multihashmap_remove (plc_gst, &plc->ego_pub_hash, gst);
508
509 if (0 == GNUNET_CONTAINER_multihashmap_size (plc_gst))
510 { 507 {
511 GNUNET_CONTAINER_multihashmap_remove (place_guests, &plc->pub_key_hash, 508 GNUNET_CONTAINER_multihashmap_remove (plc_gst, &plc->ego_pub_hash, gst);
512 plc_gst); 509
513 GNUNET_CONTAINER_multihashmap_destroy (plc_gst); 510 if (0 == GNUNET_CONTAINER_multihashmap_size (plc_gst))
511 {
512 GNUNET_CONTAINER_multihashmap_remove (place_guests, &plc->pub_key_hash,
513 plc_gst);
514 GNUNET_CONTAINER_multihashmap_destroy (plc_gst);
515 }
514 } 516 }
515 GNUNET_CONTAINER_multihashmap_remove (guests, &plc->pub_key_hash, gst); 517 GNUNET_CONTAINER_multihashmap_remove (guests, &plc->pub_key_hash, gst);
516
517 if (NULL != gst->join_req) 518 if (NULL != gst->join_req)
518 GNUNET_free (gst->join_req); 519 GNUNET_free (gst->join_req);
519 if (NULL != gst->relays) 520 if (NULL != gst->relays)
@@ -1755,6 +1756,7 @@ guest_enter (const struct GuestEnterRequest *greq, struct Guest **ret_gst)
1755 struct GNUNET_CONTAINER_MultiHashMap * 1756 struct GNUNET_CONTAINER_MultiHashMap *
1756 plc_gst = GNUNET_CONTAINER_multihashmap_get (place_guests, &place_pub_hash); 1757 plc_gst = GNUNET_CONTAINER_multihashmap_get (place_guests, &place_pub_hash);
1757 struct Guest *gst = NULL; 1758 struct Guest *gst = NULL;
1759 int new_guest;
1758 1760
1759 if (NULL != plc_gst) 1761 if (NULL != plc_gst)
1760 gst = GNUNET_CONTAINER_multihashmap_get (plc_gst, &ego_pub_hash); 1762 gst = GNUNET_CONTAINER_multihashmap_get (plc_gst, &ego_pub_hash);
@@ -1763,9 +1765,12 @@ guest_enter (const struct GuestEnterRequest *greq, struct Guest **ret_gst)
1763 "plc_gst = %p, gst = %p\n", 1765 "plc_gst = %p, gst = %p\n",
1764 plc_gst, 1766 plc_gst,
1765 gst); 1767 gst);
1768
1769 new_guest = GNUNET_NO;
1766 if (NULL == gst) 1770 if (NULL == gst)
1767 { 1771 {
1768 gst = GNUNET_new (struct Guest); 1772 gst = GNUNET_new (struct Guest);
1773 new_guest = GNUNET_YES;
1769 } 1774 }
1770 if (NULL == gst->slave) 1775 if (NULL == gst->slave)
1771 { 1776 {
@@ -1841,6 +1846,9 @@ guest_enter (const struct GuestEnterRequest *greq, struct Guest **ret_gst)
1841 plc_gst = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_YES); 1846 plc_gst = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_YES);
1842 (void) GNUNET_CONTAINER_multihashmap_put (place_guests, &plc->pub_key_hash, plc_gst, 1847 (void) GNUNET_CONTAINER_multihashmap_put (place_guests, &plc->pub_key_hash, plc_gst,
1843 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST); 1848 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST);
1849 }
1850 if (GNUNET_YES == new_guest)
1851 {
1844 (void) GNUNET_CONTAINER_multihashmap_put (plc_gst, &plc->ego_pub_hash, gst, 1852 (void) GNUNET_CONTAINER_multihashmap_put (plc_gst, &plc->ego_pub_hash, gst,
1845 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST); 1853 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST);
1846 (void) GNUNET_CONTAINER_multihashmap_put (guests, &plc->pub_key_hash, gst, 1854 (void) GNUNET_CONTAINER_multihashmap_put (guests, &plc->pub_key_hash, gst,
@@ -1862,6 +1870,7 @@ guest_enter (const struct GuestEnterRequest *greq, struct Guest **ret_gst)
1862 ret = GNUNET_YES; 1870 ret = GNUNET_YES;
1863 } 1871 }
1864 1872
1873 // TODO: explain why free(gst) not necessary
1865 if (NULL != ret_gst) 1874 if (NULL != ret_gst)
1866 *ret_gst = gst; 1875 *ret_gst = gst;
1867 return ret; 1876 return ret;