[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r17885 - gnunet/src/mesh
From: |
gnunet |
Subject: |
[GNUnet-SVN] r17885 - gnunet/src/mesh |
Date: |
Mon, 31 Oct 2011 18:52:40 +0100 |
Author: bartpolot
Date: 2011-10-31 18:52:40 +0100 (Mon, 31 Oct 2011)
New Revision: 17885
Modified:
gnunet/src/mesh/gnunet-service-mesh.c
Log:
Direct paths can only come from CORE, ignore other sources about paths with l
<= 2
Modified: gnunet/src/mesh/gnunet-service-mesh.c
===================================================================
--- gnunet/src/mesh/gnunet-service-mesh.c 2011-10-31 17:42:05 UTC (rev
17884)
+++ gnunet/src/mesh/gnunet-service-mesh.c 2011-10-31 17:52:40 UTC (rev
17885)
@@ -1513,11 +1513,12 @@
* @param peer_info Destination peer to add the path to.
* @param path New path to add. Last peer must be the peer in arg 1.
* Path will be either used of freed if already known.
- *
- * TODO: trim the part from origin to us? Add it as path to origin?
+ * @param trusted Do we trust that this path is real?
*/
void
-path_add_to_peer (struct MeshPeerInfo *peer_info, struct MeshPeerPath *path)
+path_add_to_peer (struct MeshPeerInfo *peer_info,
+ struct MeshPeerPath *path,
+ int trusted)
{
struct MeshPeerPath *aux;
unsigned int l;
@@ -1529,6 +1530,11 @@
path_destroy (path);
return;
}
+ if (path->length <= 2 && GNUNET_NO == trusted)
+ {
+ /* Only allow CORE to tell us about direct paths */
+ return;
+ }
for (l = 1; l < path->length; l++)
{
if (path->peers[l] == myid)
@@ -1599,12 +1605,15 @@
*
* @param peer_info Peer to add the path to, being the origin of the path.
* @param path New path to add after being inversed.
+ * @param trusted Do we trust that this path is real?
*/
static void
-path_add_to_origin (struct MeshPeerInfo *peer_info, struct MeshPeerPath *path)
+path_add_to_origin (struct MeshPeerInfo *peer_info,
+ struct MeshPeerPath *path,
+ int trusted)
{
path_invert(path);
- path_add_to_peer (peer_info, path);
+ path_add_to_peer (peer_info, path, trusted);
}
@@ -2568,7 +2577,7 @@
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"MESH: It's for us!\n");
- path_add_to_origin (orig_peer_info, path);
+ path_add_to_origin (orig_peer_info, path, GNUNET_NO);
if (NULL == t->peers)
t->peers = GNUNET_CONTAINER_multihashmap_create(4);
GNUNET_break (GNUNET_OK == GNUNET_CONTAINER_multihashmap_put (
@@ -2603,9 +2612,9 @@
path2 = path_duplicate(path);
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"MESH: Retransmitting.\n");
- path_add_to_peer(dest_peer_info, path);
+ path_add_to_peer(dest_peer_info, path, GNUNET_NO);
path = path_duplicate(path2);
- path_add_to_origin(orig_peer_info, path2);
+ path_add_to_origin(orig_peer_info, path2, GNUNET_NO);
send_create_path(dest_peer_info, path, t);
}
return GNUNET_OK;
@@ -3241,7 +3250,7 @@
p = path_build_from_dht (get_path, get_path_length,
put_path, put_path_length);
- path_add_to_peer (path_info->peer, p);
+ path_add_to_peer (path_info->peer, p, GNUNET_NO);
for (i = 0; i < path_info->peer->ntunnels; i++)
{
tunnel_add_peer (path_info->peer->tunnels[i], path_info->peer);
@@ -3295,7 +3304,7 @@
p = path_build_from_dht (get_path, get_path_length,
put_path, put_path_length);
- path_add_to_peer (peer_info, p);
+ path_add_to_peer (peer_info, p, GNUNET_NO);
tunnel_add_peer(t, peer_info);
peer_info_connect (peer_info, t);
}
@@ -4205,7 +4214,7 @@
path->peers[1] = peer_info->id;
GNUNET_PEER_change_rc(myid, 1);
GNUNET_PEER_change_rc(peer_info->id, 1);
- path_add_to_peer (peer_info, path);
+ path_add_to_peer (peer_info, path, GNUNET_YES);
return;
}
@@ -4423,7 +4432,7 @@
peer = peer_info_get(&my_full_id);
p = path_new (1);
p->peers[0] = myid;
- path_add_to_peer(peer, p);
+ path_add_to_peer(peer, p, GNUNET_YES);
/* Scheduled the task to clean up when shutdown is called */
GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL, &shutdown_task,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r17885 - gnunet/src/mesh,
gnunet <=