diff options
author | lurchi <lurchi@strangeplace.net> | 2017-01-16 07:50:00 +0100 |
---|---|---|
committer | lurchi <lurchi@strangeplace.net> | 2017-01-16 08:01:57 +0100 |
commit | 301693904d07a063711bfc1ff4c5505c61eaf821 (patch) | |
tree | c1a1a389763c550fc57d76ce884041a4490c27b8 /src/multicast | |
parent | 9a8457f1bbce39b73ab7c03bc9706b10f80fbf0c (diff) | |
download | gnunet-301693904d07a063711bfc1ff4c5505c61eaf821.tar.gz gnunet-301693904d07a063711bfc1ff4c5505c61eaf821.zip |
bugfixes in the multicast service
It's now possible to use the social service to enter a place on another peer as guest.
Diffstat (limited to 'src/multicast')
-rw-r--r-- | src/multicast/gnunet-service-multicast.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/multicast/gnunet-service-multicast.c b/src/multicast/gnunet-service-multicast.c index e84fdb20f..afe30e5c2 100644 --- a/src/multicast/gnunet-service-multicast.c +++ b/src/multicast/gnunet-service-multicast.c | |||
@@ -1019,6 +1019,7 @@ handle_client_member_join (void *cls, | |||
1019 | if (NULL == mem) | 1019 | if (NULL == mem) |
1020 | { | 1020 | { |
1021 | mem = GNUNET_new (struct Member); | 1021 | mem = GNUNET_new (struct Member); |
1022 | mem->origin = msg->origin; | ||
1022 | mem->priv_key = msg->member_key; | 1023 | mem->priv_key = msg->member_key; |
1023 | mem->pub_key = mem_pub_key; | 1024 | mem->pub_key = mem_pub_key; |
1024 | mem->pub_key_hash = mem_pub_key_hash; | 1025 | mem->pub_key_hash = mem_pub_key_hash; |
@@ -1083,9 +1084,10 @@ handle_client_member_join (void *cls, | |||
1083 | join_msg_size = ntohs (join_msg->size); | 1084 | join_msg_size = ntohs (join_msg->size); |
1084 | } | 1085 | } |
1085 | 1086 | ||
1087 | uint16_t req_msg_size = sizeof (struct MulticastJoinRequestMessage) + join_msg_size; | ||
1086 | struct MulticastJoinRequestMessage * | 1088 | struct MulticastJoinRequestMessage * |
1087 | req = GNUNET_malloc (sizeof (*req) + join_msg_size); | 1089 | req = GNUNET_malloc (req_msg_size); |
1088 | req->header.size = htons (sizeof (*req) + join_msg_size); | 1090 | req->header.size = htons (req_msg_size); |
1089 | req->header.type = htons (GNUNET_MESSAGE_TYPE_MULTICAST_JOIN_REQUEST); | 1091 | req->header.type = htons (GNUNET_MESSAGE_TYPE_MULTICAST_JOIN_REQUEST); |
1090 | req->group_pub_key = grp->pub_key; | 1092 | req->group_pub_key = grp->pub_key; |
1091 | req->peer = this_peer; | 1093 | req->peer = this_peer; |
@@ -1094,7 +1096,7 @@ handle_client_member_join (void *cls, | |||
1094 | GNUNET_memcpy (&req[1], join_msg, join_msg_size); | 1096 | GNUNET_memcpy (&req[1], join_msg, join_msg_size); |
1095 | 1097 | ||
1096 | req->member_pub_key = mem->pub_key; | 1098 | req->member_pub_key = mem->pub_key; |
1097 | req->purpose.size = htonl (msg_size | 1099 | req->purpose.size = htonl (req_msg_size |
1098 | - sizeof (req->header) | 1100 | - sizeof (req->header) |
1099 | - sizeof (req->reserved) | 1101 | - sizeof (req->reserved) |
1100 | - sizeof (req->signature)); | 1102 | - sizeof (req->signature)); |
@@ -1624,9 +1626,9 @@ cadet_recv_join_decision (void *cls, | |||
1624 | } | 1626 | } |
1625 | 1627 | ||
1626 | struct MulticastJoinDecisionMessageHeader * | 1628 | struct MulticastJoinDecisionMessageHeader * |
1627 | hdcsn = GNUNET_malloc (sizeof (*hdcsn) + size); | 1629 | hdcsn = GNUNET_malloc (size); |
1630 | GNUNET_memcpy (hdcsn, dcsn, size); | ||
1628 | hdcsn->peer = chn->peer; | 1631 | hdcsn->peer = chn->peer; |
1629 | GNUNET_memcpy (&hdcsn[1], dcsn, sizeof (*hdcsn) + size); | ||
1630 | 1632 | ||
1631 | struct Member *mem = (struct Member *) chn->group; | 1633 | struct Member *mem = (struct Member *) chn->group; |
1632 | client_send_join_decision (mem, hdcsn); | 1634 | client_send_join_decision (mem, hdcsn); |
@@ -1882,6 +1884,9 @@ static const struct GNUNET_CADET_MessageHandler cadet_handlers[] = { | |||
1882 | { cadet_recv_join_request, | 1884 | { cadet_recv_join_request, |
1883 | GNUNET_MESSAGE_TYPE_MULTICAST_JOIN_REQUEST, 0 }, | 1885 | GNUNET_MESSAGE_TYPE_MULTICAST_JOIN_REQUEST, 0 }, |
1884 | 1886 | ||
1887 | { cadet_recv_join_decision, | ||
1888 | GNUNET_MESSAGE_TYPE_MULTICAST_JOIN_DECISION, 0 }, | ||
1889 | |||
1885 | { cadet_recv_message, | 1890 | { cadet_recv_message, |
1886 | GNUNET_MESSAGE_TYPE_MULTICAST_MESSAGE, 0 }, | 1891 | GNUNET_MESSAGE_TYPE_MULTICAST_MESSAGE, 0 }, |
1887 | 1892 | ||