[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [gnunet] branch master updated: More bugfixes to make gnune
From: |
gnunet |
Subject: |
[GNUnet-SVN] [gnunet] branch master updated: More bugfixes to make gnunet-social usable |
Date: |
Tue, 17 Jan 2017 03:04:29 +0100 |
This is an automated email from the git hooks/post-receive script.
lurchi pushed a commit to branch master
in repository gnunet.
The following commit(s) were added to refs/heads/master by this push:
new 9407ee778 More bugfixes to make gnunet-social usable
9407ee778 is described below
commit 9407ee77841b771e774d51eaa2916bceed047c86
Author: lurchi <address@hidden>
AuthorDate: Tue Jan 17 03:00:11 2017 +0100
More bugfixes to make gnunet-social usable
- the host's entry message is not ignored anymore
- guest-talk and host-anounce are working
---
src/multicast/gnunet-service-multicast.c | 43 ++++++++++++++++++++++++--------
src/social/gnunet-social.c | 2 +-
src/social/social_api.c | 2 +-
3 files changed, 34 insertions(+), 13 deletions(-)
diff --git a/src/multicast/gnunet-service-multicast.c
b/src/multicast/gnunet-service-multicast.c
index afe30e5c2..de65e0ab7 100644
--- a/src/multicast/gnunet-service-multicast.c
+++ b/src/multicast/gnunet-service-multicast.c
@@ -710,15 +710,19 @@ cadet_notify_transmit_ready (void *cls, size_t buf_size,
void *buf)
static void
cadet_send_channel (struct Channel *chn, const struct GNUNET_MessageHeader
*msg)
{
+ uint16_t msg_size = ntohs (msg->size);
+ struct GNUNET_MessageHeader *msg_copy = GNUNET_malloc (msg_size);
+ GNUNET_memcpy (msg_copy, msg, msg_size);
+
struct CadetTransmitClosure *tcls = GNUNET_malloc (sizeof (*tcls));
tcls->chn = chn;
- tcls->msg = msg;
+ tcls->msg = msg_copy;
chn->msgs_pending++;
chn->tmit_handle
= GNUNET_CADET_notify_transmit_ready (chn->channel, GNUNET_NO,
GNUNET_TIME_UNIT_FOREVER_REL,
- ntohs (msg->size),
+ msg_size,
&cadet_notify_transmit_ready,
tcls);
GNUNET_assert (NULL != chn->tmit_handle);
@@ -783,9 +787,21 @@ cadet_send_join_decision_cb (void *cls,
const struct MulticastJoinDecisionMessageHeader *hdcsn = cls;
struct Channel *chn = channel;
+ const struct MulticastJoinDecisionMessage *dcsn =
+ (struct MulticastJoinDecisionMessage *) &hdcsn[1];
+
if (0 == memcmp (&hdcsn->member_pub_key, &chn->member_pub_key, sizeof
(chn->member_pub_key))
&& 0 == memcmp (&hdcsn->peer, &chn->peer, sizeof (chn->peer)))
{
+ if (GNUNET_YES == ntohl (dcsn->is_admitted))
+ {
+ chn->join_status = JOIN_ADMITTED;
+ }
+ else
+ {
+ chn->join_status = JOIN_REFUSED;
+ }
+
cadet_send_channel (chn, &hdcsn->header);
return GNUNET_NO;
}
@@ -1536,6 +1552,7 @@ cadet_recv_join_request (void *cls,
void **ctx,
const struct GNUNET_MessageHeader *m)
{
+ GNUNET_CADET_receive_done(channel);
const struct MulticastJoinRequestMessage *
req = (const struct MulticastJoinRequestMessage *) m;
uint16_t size = ntohs (m->size);
@@ -1578,6 +1595,7 @@ cadet_recv_join_request (void *cls,
chn->join_status = JOIN_WAITING;
GNUNET_CONTAINER_multihashmap_put (channels_in, &chn->group_pub_hash, chn,
GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
+ *ctx = chn;
client_send_all (&group_pub_hash, m);
return GNUNET_OK;
@@ -1593,10 +1611,14 @@ cadet_recv_join_decision (void *cls,
void **ctx,
const struct GNUNET_MessageHeader *m)
{
+ GNUNET_CADET_receive_done (channel);
+ const struct MulticastJoinDecisionMessageHeader *
+ hdcsn = (const struct MulticastJoinDecisionMessageHeader *) m;
const struct MulticastJoinDecisionMessage *
- dcsn = (const struct MulticastJoinDecisionMessage *) m;
+ dcsn = (const struct MulticastJoinDecisionMessage *) &hdcsn[1];
uint16_t size = ntohs (m->size);
- if (size < sizeof (*dcsn))
+ if (size < sizeof (struct MulticastJoinDecisionMessageHeader) +
+ sizeof (struct MulticastJoinDecisionMessage))
{
GNUNET_break_op (0);
return GNUNET_SYSERR;
@@ -1625,15 +1647,10 @@ cadet_recv_join_decision (void *cls,
break;
}
- struct MulticastJoinDecisionMessageHeader *
- hdcsn = GNUNET_malloc (size);
- GNUNET_memcpy (hdcsn, dcsn, size);
- hdcsn->peer = chn->peer;
-
+ // FIXME: do we need to copy chn->peer or compare it with hdcsn->peer?
struct Member *mem = (struct Member *) chn->group;
client_send_join_decision (mem, hdcsn);
- GNUNET_free (hdcsn);
- if (GNUNET_YES == ntohs (dcsn->is_admitted))
+ if (GNUNET_YES == ntohl (dcsn->is_admitted))
{
chn->join_status = JOIN_ADMITTED;
return GNUNET_OK;
@@ -1654,6 +1671,7 @@ cadet_recv_message (void *cls,
void **ctx,
const struct GNUNET_MessageHeader *m)
{
+ GNUNET_CADET_receive_done(channel);
const struct GNUNET_MULTICAST_MessageHeader *
msg = (const struct GNUNET_MULTICAST_MessageHeader *) m;
uint16_t size = ntohs (m->size);
@@ -1699,6 +1717,7 @@ cadet_recv_request (void *cls,
void **ctx,
const struct GNUNET_MessageHeader *m)
{
+ GNUNET_CADET_receive_done(channel);
const struct GNUNET_MULTICAST_RequestHeader *
req = (const struct GNUNET_MULTICAST_RequestHeader *) m;
uint16_t size = ntohs (m->size);
@@ -1744,6 +1763,7 @@ cadet_recv_replay_request (void *cls,
void **ctx,
const struct GNUNET_MessageHeader *m)
{
+ GNUNET_CADET_receive_done(channel);
struct MulticastReplayRequestMessage rep;
uint16_t size = ntohs (m->size);
if (size < sizeof (rep))
@@ -1786,6 +1806,7 @@ cadet_recv_replay_response (void *cls,
void **ctx,
const struct GNUNET_MessageHeader *m)
{
+ GNUNET_CADET_receive_done(channel);
//struct Channel *chn = *ctx;
/* @todo FIXME: got replay error response, send request to other members */
diff --git a/src/social/gnunet-social.c b/src/social/gnunet-social.c
index afd06028c..6d72ca552 100644
--- a/src/social/gnunet-social.c
+++ b/src/social/gnunet-social.c
@@ -360,7 +360,7 @@ notify_data (void *cls, uint16_t *data_size, void *data)
if (0 == tmit->size)
{
- if (op_host_announce || op_host_assign || op_guest_talk)
+ if ((op_host_announce || op_host_assign || op_guest_talk) && !opt_follow)
{
exit_success ();
}
diff --git a/src/social/social_api.c b/src/social/social_api.c
index d96c93d8f..82928a258 100644
--- a/src/social/social_api.c
+++ b/src/social/social_api.c
@@ -893,7 +893,7 @@ handle_guest_enter_decision (void *cls,
struct GNUNET_SOCIAL_Guest *gst = cls;
struct GNUNET_PSYC_Message *pmsg = NULL;
- if (ntohs (dcsn->header.size) <= sizeof (*dcsn) + sizeof (*pmsg))
+ if (ntohs (dcsn->header.size) > sizeof (*dcsn))
pmsg = (struct GNUNET_PSYC_Message *) GNUNET_MQ_extract_nested_mh (dcsn);
if (NULL != gst->entry_dcsn_cb)
--
To stop receiving notification emails like this one, please contact
address@hidden
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] [gnunet] branch master updated: More bugfixes to make gnunet-social usable,
gnunet <=