[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r27970 - gnunet/src/mesh
From: |
gnunet |
Subject: |
[GNUnet-SVN] r27970 - gnunet/src/mesh |
Date: |
Sat, 13 Jul 2013 01:01:17 +0200 |
Author: bartpolot
Date: 2013-07-13 01:01:17 +0200 (Sat, 13 Jul 2013)
New Revision: 27970
Modified:
gnunet/src/mesh/gnunet-service-mesh.c
Log:
- limit retransmission buffer size
Modified: gnunet/src/mesh/gnunet-service-mesh.c
===================================================================
--- gnunet/src/mesh/gnunet-service-mesh.c 2013-07-12 22:37:04 UTC (rev
27969)
+++ gnunet/src/mesh/gnunet-service-mesh.c 2013-07-12 23:01:17 UTC (rev
27970)
@@ -328,29 +328,34 @@
/**
* DLL of messages sent and not yet ACK'd.
*/
- struct MeshReliableMessage *head_sent;
- struct MeshReliableMessage *tail_sent;
+ struct MeshReliableMessage *head_sent;
+ struct MeshReliableMessage *tail_sent;
/**
+ * Messages pending
+ */
+ unsigned int n_sent;
+
+ /**
* DLL of messages received out of order.
*/
- struct MeshReliableMessage *head_recv;
- struct MeshReliableMessage *tail_recv;
+ struct MeshReliableMessage *head_recv;
+ struct MeshReliableMessage *tail_recv;
/**
* Task to resend/poll in case no ACK is received.
*/
- GNUNET_SCHEDULER_TaskIdentifier retry_task;
+ GNUNET_SCHEDULER_TaskIdentifier retry_task;
/**
* Counter for exponential backoff.
*/
- struct GNUNET_TIME_Relative retry_timer;
+ struct GNUNET_TIME_Relative retry_timer;
/**
* How long does it usually take to get an ACK. FIXME update with traffic
*/
- struct GNUNET_TIME_Relative expected_delay;
+ struct GNUNET_TIME_Relative expected_delay;
};
@@ -2109,6 +2114,9 @@
}
if (GNUNET_YES == t->reliable && NULL != t->client)
tunnel_send_fwd_data_ack (t);
+ if (GNUNET_YES == t->reliable && NULL != t->owner)
+ if (t->fwd_rel->n_sent > 10)
+ return;
break;
case GNUNET_MESSAGE_TYPE_MESH_ACK:
if (NULL != t->owner && GNUNET_YES == t->reliable)
@@ -4015,6 +4023,7 @@
time = GNUNET_TIME_absolute_get_duration (copy->timestamp);
rel->expected_delay.rel_value += time.rel_value;
rel->expected_delay.rel_value /= 2;
+ rel->n_sent--;
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "!!! new expected delay %s\n",
GNUNET_STRINGS_relative_time_to_string (rel->expected_delay,
GNUNET_NO));
@@ -4782,6 +4791,7 @@
copy->timestamp = GNUNET_TIME_absolute_get ();
rel = (tid < GNUNET_MESH_LOCAL_TUNNEL_ID_SERV) ? t->fwd_rel : t->bck_rel;
copy->rel = rel;
+ rel->n_sent++;
GNUNET_CONTAINER_DLL_insert_tail (rel->head_sent, rel->tail_sent, copy);
if (GNUNET_SCHEDULER_NO_TASK == rel->retry_task)
{
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r27970 - gnunet/src/mesh,
gnunet <=