gnunet

Main GNUnet Logic
Log | Files | Refs | Submodules | README | LICENSE

commit d3f8da47f36cb64a93d0004d14abf1703cf246a1
parent bb92e521166029c43f2870368a69e85d95e54f1f
Author: Bart Polot <bart@net.in.tum.de>
Date:   Fri, 12 Jul 2013 22:15:25 +0000

- calculate round trip time of real message, not original

Diffstat:
Msrc/mesh/gnunet-service-mesh.c | 17+++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/src/mesh/gnunet-service-mesh.c b/src/mesh/gnunet-service-mesh.c @@ -54,6 +54,7 @@ #define MESH_RETRANSMIT_TIME GNUNET_TIME_relative_multiply (\ GNUNET_TIME_UNIT_SECONDS,\ 5) +#define MESH_RETRANSMIT_MARGIN 4 #if MESH_DEBUG_CONNECTION #define DEBUG_CONN(...) GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, __VA_ARGS__) @@ -2325,16 +2326,22 @@ tunnel_retransmit_message (void *cls, t = rel->t; copy = rel->head_sent; + if (NULL == copy) + { + GNUNET_break (0); + return; + } GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "!!! RETRANSMIT %u\n", copy->id); + copy->timestamp = GNUNET_TIME_absolute_get (); payload = (struct GNUNET_MESH_Data *) &copy[1]; hop = rel == t->fwd_rel ? t->next_hop : t->prev_hop; send_prebuilt_message (&payload->header, hop, t); GNUNET_STATISTICS_update (stats, "# data retransmitted", 1, GNUNET_NO); - rel->retry_timer = GNUNET_TIME_STD_BACKOFF (rel->retry_timer); // FIXME adapt + rel->retry_timer = GNUNET_TIME_STD_BACKOFF (rel->retry_timer); rel->retry_task = GNUNET_SCHEDULER_add_delayed (rel->retry_timer, - &tunnel_retransmit_message, - cls); + &tunnel_retransmit_message, + cls); } @@ -4754,7 +4761,9 @@ handle_local_data (void *cls, struct GNUNET_SERVER_Client *client, GNUNET_CONTAINER_DLL_insert_tail (rel->head_sent, rel->tail_sent, copy); if (GNUNET_SCHEDULER_NO_TASK == rel->retry_task) { - rel->retry_timer = rel->expected_delay; + rel->retry_timer = + GNUNET_TIME_relative_multiply (rel->expected_delay, + MESH_RETRANSMIT_MARGIN); rel->retry_task = GNUNET_SCHEDULER_add_delayed (rel->retry_timer, &tunnel_retransmit_message,