aboutsummaryrefslogtreecommitdiff
path: root/src/multicast
diff options
context:
space:
mode:
authorlurchi <lurchi@strangeplace.net>2017-12-14 18:08:41 +0100
committerlurchi <lurchi@strangeplace.net>2017-12-14 18:12:00 +0100
commitf2f8d311f0d93970d70a796688bc89da10b5f75d (patch)
tree3b5ddf5c36e086f8544c9fb14e1c998e8b92a8eb /src/multicast
parentb31af32af0dbf2f38b39cb4e3cdfada4ad313c77 (diff)
downloadgnunet-f2f8d311f0d93970d70a796688bc89da10b5f75d.tar.gz
gnunet-f2f8d311f0d93970d70a796688bc89da10b5f75d.zip
actually use the is_disconnecting flag; debug output; remove dead code
Diffstat (limited to 'src/multicast')
-rw-r--r--src/multicast/gnunet-service-multicast.c29
1 files changed, 18 insertions, 11 deletions
diff --git a/src/multicast/gnunet-service-multicast.c b/src/multicast/gnunet-service-multicast.c
index 11f3c08b7..83aee846c 100644
--- a/src/multicast/gnunet-service-multicast.c
+++ b/src/multicast/gnunet-service-multicast.c
@@ -137,6 +137,7 @@ struct Channel
137 */ 137 */
138 struct GNUNET_CADET_Channel *channel; 138 struct GNUNET_CADET_Channel *channel;
139 139
140 // FIXME: not used
140 /** 141 /**
141 * CADET transmission handle. 142 * CADET transmission handle.
142 */ 143 */
@@ -228,7 +229,7 @@ struct Group
228 /** 229 /**
229 * Is the client disconnected? #GNUNET_YES or #GNUNET_NO 230 * Is the client disconnected? #GNUNET_YES or #GNUNET_NO
230 */ 231 */
231 uint8_t disconnected; 232 uint8_t is_disconnected;
232 233
233 /** 234 /**
234 * Is this an origin (#GNUNET_YES), or member (#GNUNET_NO)? 235 * Is this an origin (#GNUNET_YES), or member (#GNUNET_NO)?
@@ -365,6 +366,8 @@ client_send_join_decision (struct Member *mem,
365static void 366static void
366shutdown_task (void *cls) 367shutdown_task (void *cls)
367{ 368{
369 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
370 "shutting down\n");
368 if (NULL != cadet) 371 if (NULL != cadet)
369 { 372 {
370 GNUNET_CADET_disconnect (cadet); 373 GNUNET_CADET_disconnect (cadet);
@@ -1373,6 +1376,7 @@ handle_client_origin_start (void *cls,
1373 grp->is_origin = GNUNET_YES; 1376 grp->is_origin = GNUNET_YES;
1374 grp->pub_key = pub_key; 1377 grp->pub_key = pub_key;
1375 grp->pub_key_hash = pub_key_hash; 1378 grp->pub_key_hash = pub_key_hash;
1379 grp->is_disconnected = GNUNET_NO;
1376 1380
1377 GNUNET_CONTAINER_multihashmap_put (origins, &grp->pub_key_hash, orig, 1381 GNUNET_CONTAINER_multihashmap_put (origins, &grp->pub_key_hash, orig,
1378 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST); 1382 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST);
@@ -1500,6 +1504,7 @@ handle_client_member_join (void *cls,
1500 grp->is_origin = GNUNET_NO; 1504 grp->is_origin = GNUNET_NO;
1501 grp->pub_key = msg->group_pub_key; 1505 grp->pub_key = msg->group_pub_key;
1502 grp->pub_key_hash = pub_key_hash; 1506 grp->pub_key_hash = pub_key_hash;
1507 grp->is_disconnected = GNUNET_NO;
1503 group_set_cadet_port_hash (grp); 1508 group_set_cadet_port_hash (grp);
1504 1509
1505 if (NULL == grp_mem) 1510 if (NULL == grp_mem)
@@ -1641,6 +1646,7 @@ handle_client_join_decision (void *cls,
1641 GNUNET_SERVICE_client_drop (client); 1646 GNUNET_SERVICE_client_drop (client);
1642 return; 1647 return;
1643 } 1648 }
1649 GNUNET_assert (GNUNET_NO == grp->is_disconnected);
1644 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 1650 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1645 "%p got join decision from client for group %s..\n", 1651 "%p got join decision from client for group %s..\n",
1646 grp, GNUNET_h2s (&grp->pub_key_hash)); 1652 grp, GNUNET_h2s (&grp->pub_key_hash));
@@ -1687,9 +1693,11 @@ handle_client_part_request (void *cls,
1687 GNUNET_SERVICE_client_drop (client); 1693 GNUNET_SERVICE_client_drop (client);
1688 return; 1694 return;
1689 } 1695 }
1696 GNUNET_assert (GNUNET_NO == grp->is_disconnected);
1690 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 1697 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1691 "%p got part request from client for group %s.\n", 1698 "%p got part request from client for group %s.\n",
1692 grp, GNUNET_h2s (&grp->pub_key_hash)); 1699 grp, GNUNET_h2s (&grp->pub_key_hash));
1700 grp->is_disconnected = GNUNET_YES;
1693 env = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_MULTICAST_PART_ACK); 1701 env = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_MULTICAST_PART_ACK);
1694 client_send_group (grp, env); 1702 client_send_group (grp, env);
1695 GNUNET_SERVICE_client_continue (client); 1703 GNUNET_SERVICE_client_continue (client);
@@ -1721,6 +1729,7 @@ handle_client_multicast_message (void *cls,
1721 GNUNET_SERVICE_client_drop (client); 1729 GNUNET_SERVICE_client_drop (client);
1722 return; 1730 return;
1723 } 1731 }
1732 GNUNET_assert (GNUNET_NO == grp->is_disconnected);
1724 GNUNET_assert (GNUNET_YES == grp->is_origin); 1733 GNUNET_assert (GNUNET_YES == grp->is_origin);
1725 struct Origin *orig = grp->origin; 1734 struct Origin *orig = grp->origin;
1726 1735
@@ -1775,6 +1784,7 @@ handle_client_multicast_request (void *cls,
1775 GNUNET_SERVICE_client_drop (client); 1784 GNUNET_SERVICE_client_drop (client);
1776 return; 1785 return;
1777 } 1786 }
1787 GNUNET_assert (GNUNET_NO == grp->is_disconnected);
1778 GNUNET_assert (GNUNET_NO == grp->is_origin); 1788 GNUNET_assert (GNUNET_NO == grp->is_origin);
1779 struct Member *mem = grp->member; 1789 struct Member *mem = grp->member;
1780 1790
@@ -1839,6 +1849,7 @@ handle_client_replay_request (void *cls,
1839 GNUNET_SERVICE_client_drop (client); 1849 GNUNET_SERVICE_client_drop (client);
1840 return; 1850 return;
1841 } 1851 }
1852 GNUNET_assert (GNUNET_NO == grp->is_disconnected);
1842 GNUNET_assert (GNUNET_NO == grp->is_origin); 1853 GNUNET_assert (GNUNET_NO == grp->is_origin);
1843 struct Member *mem = grp->member; 1854 struct Member *mem = grp->member;
1844 1855
@@ -1930,6 +1941,7 @@ handle_client_replay_response_end (void *cls,
1930 GNUNET_SERVICE_client_drop (client); 1941 GNUNET_SERVICE_client_drop (client);
1931 return; 1942 return;
1932 } 1943 }
1944 GNUNET_assert (GNUNET_NO == grp->is_disconnected);
1933 1945
1934 struct GNUNET_HashCode key_hash; 1946 struct GNUNET_HashCode key_hash;
1935 replay_key_hash (res->fragment_id, res->message_id, res->fragment_offset, 1947 replay_key_hash (res->fragment_id, res->message_id, res->fragment_offset,
@@ -1989,6 +2001,7 @@ handle_client_replay_response (void *cls,
1989 GNUNET_SERVICE_client_drop (client); 2001 GNUNET_SERVICE_client_drop (client);
1990 return; 2002 return;
1991 } 2003 }
2004 GNUNET_assert (GNUNET_NO == grp->is_disconnected);
1992 2005
1993 const struct GNUNET_MessageHeader *msg = &res->header; 2006 const struct GNUNET_MessageHeader *msg = &res->header;
1994 if (GNUNET_MULTICAST_REC_OK == res->error_code) 2007 if (GNUNET_MULTICAST_REC_OK == res->error_code)
@@ -2088,6 +2101,9 @@ client_notify_disconnect (void *cls,
2088 struct ClientList *cl = grp->clients_head; 2101 struct ClientList *cl = grp->clients_head;
2089 while (NULL != cl) 2102 while (NULL != cl)
2090 { 2103 {
2104 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2105 "iterating clients for group %p\n",
2106 grp);
2091 if (cl->client == client) 2107 if (cl->client == client)
2092 { 2108 {
2093 GNUNET_CONTAINER_DLL_remove (grp->clients_head, grp->clients_tail, cl); 2109 GNUNET_CONTAINER_DLL_remove (grp->clients_head, grp->clients_tail, cl);
@@ -2101,16 +2117,7 @@ client_notify_disconnect (void *cls,
2101 2117
2102 if (NULL == grp->clients_head) 2118 if (NULL == grp->clients_head)
2103 { /* Last client disconnected. */ 2119 { /* Last client disconnected. */
2104#if FIXME 2120 cleanup_group (grp);
2105 if (NULL != grp->tmit_head)
2106 { /* Send pending messages via CADET before cleanup. */
2107 transmit_message (grp);
2108 }
2109 else
2110#endif
2111 {
2112 cleanup_group (grp);
2113 }
2114 } 2121 }
2115} 2122}
2116 2123