/**
* Peers in the tunnel, indexed by PeerIdentity -> (MeshPeerInfo)
+ * containing peers added by id or by type, not intermediate peers.
*/
struct GNUNET_CONTAINER_MultiHashMap *peers;
}
GNUNET_CRYPTO_hash (&t->local_tid, sizeof (MESH_TunnelNumber), &hash);
- if (NULL != c && GNUNET_YES != GNUNET_CONTAINER_multihashmap_remove (c->tunnels, &hash, t))
+ if (NULL != c &&
+ GNUNET_YES != GNUNET_CONTAINER_multihashmap_remove (c->tunnels, &hash, t))
{
r = GNUNET_SYSERR;
}
GNUNET_CONTAINER_multihashmap_remove (incoming_tunnels, &hash, t));
}
- GNUNET_CONTAINER_multihashmap_iterate(t->peers, &peer_info_delete_tunnel, t);
- GNUNET_CONTAINER_multihashmap_destroy (t->peers);
+ if (NULL != t->peers)
+ {
+ GNUNET_CONTAINER_multihashmap_iterate(t->peers,
+ &peer_info_delete_tunnel, t);
+ GNUNET_CONTAINER_multihashmap_destroy (t->peers);
+ }
q = t->queue_head;
while (NULL != q)
{
t = GNUNET_malloc (sizeof (struct MeshTunnel));
t->id.oid = GNUNET_PEER_intern (pi);
t->id.tid = tid;
- t->peers = GNUNET_CONTAINER_multihashmap_create (32);
t->local_tid = next_local_tid++;
/* FIXME test if taken */
next_local_tid |= GNUNET_MESH_LOCAL_TUNNEL_ID_SERV;