{
chn->join_status = JOIN_REFUSED;
}
-
cadet_send_channel (chn, &hdcsn->header);
- return GNUNET_NO;
+ return GNUNET_YES;
}
+
+ // return GNUNET_YES to continue the multihashmap_get iteration
return GNUNET_YES;
}
struct GNUNET_CADET_Channel *channel,
const struct GNUNET_PeerIdentity *source)
{
- struct Channel *chn = GNUNET_malloc (sizeof *chn);
+ struct Channel *chn = GNUNET_malloc (sizeof (struct Channel));
chn->group = cls;
chn->channel = channel;
chn->direction = DIR_INCOMING;
chn->join_status = JOIN_NOT_ASKED;
-
- GNUNET_CONTAINER_multihashmap_put (channels_in, &chn->group_pub_hash, chn,
+
+ GNUNET_CONTAINER_multihashmap_put (channels_in, &chn->group->pub_key_hash, chn,
GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
return chn;
}
orig->cadet_port = GNUNET_CADET_open_port (cadet,
&grp->cadet_port_hash,
cadet_notify_connect,
- NULL,
+ grp,
cadet_notify_window_change,
cadet_notify_disconnect,
cadet_handlers);
GNUNET_CRYPTO_ecdsa_key_get_public (&msg->member_key, &mem_pub_key);
GNUNET_CRYPTO_hash (&mem_pub_key, sizeof (mem_pub_key), &mem_pub_key_hash);
GNUNET_CRYPTO_hash (&msg->group_pub_key, sizeof (msg->group_pub_key), &pub_key_hash);
-
+
struct GNUNET_CONTAINER_MultiHashMap *
grp_mem = GNUNET_CONTAINER_multihashmap_get (group_members, &pub_key_hash);
struct Member *mem = NULL;
{
mem = GNUNET_CONTAINER_multihashmap_get (grp_mem, &mem_pub_key_hash);
}
+
if (NULL == mem)
{
mem = GNUNET_new (struct Member);
grp->pub_key = msg->group_pub_key;
grp->pub_key_hash = pub_key_hash;
group_set_cadet_port_hash (grp);
-
+
if (NULL == grp_mem)
{
grp_mem = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_YES);
- GNUNET_CONTAINER_multihashmap_put (group_members, &grp->pub_key_hash, grp_mem,
+ ret = GNUNET_CONTAINER_multihashmap_put (group_members, &grp->pub_key_hash, grp_mem,
GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST);
}
GNUNET_CONTAINER_multihashmap_put (grp_mem, &mem->pub_key_hash, mem,
GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST);
+
GNUNET_CONTAINER_multihashmap_put (members, &grp->pub_key_hash, mem,
GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
}
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Client connected to group %s as member %s (%s).\n",
GNUNET_h2s (&grp->pub_key_hash),
- GNUNET_h2s (&mem->pub_key_hash),
+ GNUNET_h2s2 (&mem->pub_key_hash),
str);
GNUNET_free (str);
"%p ..and member %s: %p\n",
grp, GNUNET_h2s (&member_key_hash), mem);
}
- if (NULL != mem)
+
+ if (NULL != mem)
{ /* Found local member */
client_send_join_decision (mem, hdcsn);
}