aboutsummaryrefslogtreecommitdiff
path: root/src/multicast
diff options
context:
space:
mode:
authorlurchi <lurchi@strangeplace.net>2017-01-16 07:50:00 +0100
committerlurchi <lurchi@strangeplace.net>2017-01-16 08:01:57 +0100
commit301693904d07a063711bfc1ff4c5505c61eaf821 (patch)
treec1a1a389763c550fc57d76ce884041a4490c27b8 /src/multicast
parent9a8457f1bbce39b73ab7c03bc9706b10f80fbf0c (diff)
downloadgnunet-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.c15
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