[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r24452 - in gnunet/src: fragmentation transport
From: |
gnunet |
Subject: |
[GNUnet-SVN] r24452 - in gnunet/src: fragmentation transport |
Date: |
Mon, 22 Oct 2012 14:54:07 +0200 |
Author: grothoff
Date: 2012-10-22 14:54:07 +0200 (Mon, 22 Oct 2012)
New Revision: 24452
Modified:
gnunet/src/fragmentation/fragmentation.c
gnunet/src/transport/plugin_transport_udp.c
Log:
-fixing frag
Modified: gnunet/src/fragmentation/fragmentation.c
===================================================================
--- gnunet/src/fragmentation/fragmentation.c 2012-10-22 12:36:41 UTC (rev
24451)
+++ gnunet/src/fragmentation/fragmentation.c 2012-10-22 12:54:07 UTC (rev
24452)
@@ -228,9 +228,7 @@
{
/* full round transmitted wait 2x delay for ACK before going again */
fc->num_rounds++;
- delay = GNUNET_TIME_relative_multiply (delay, 2);
- fc->msg_delay = GNUNET_TIME_relative_multiply (fc->msg_delay,
- 2 + (size / (fc->mtu -
sizeof (struct FragmentHeader))));
+ delay = GNUNET_TIME_relative_multiply (fc->ack_delay, 2);
/* never use zero, need some time for ACK always */
delay = GNUNET_TIME_relative_max (MIN_ACK_DELAY, delay);
fc->wack = GNUNET_YES;
@@ -353,7 +351,6 @@
unsigned int snd_cnt;
unsigned int i;
- fprintf (stderr, "Got ACK!\n");
if (sizeof (struct FragmentAcknowledgement) != ntohs (msg->size))
{
GNUNET_break_op (0);
@@ -393,16 +390,15 @@
else if (snd_cnt > ack_cnt)
{
/* some loss, slow down proportionally */
+ fprintf (stderr, "Prop loss\n");
fc->msg_delay.rel_value = ((fc->msg_delay.rel_value * ack_cnt) /
snd_cnt);
}
else if (0 < fc->msg_delay.rel_value)
{
fc->msg_delay.rel_value--; /* try a bit faster */
}
- fc->msg_delay = GNUNET_TIME_relative_max (fc->msg_delay,
+ fc->msg_delay = GNUNET_TIME_relative_min (fc->msg_delay,
GNUNET_TIME_UNIT_SECONDS);
- fprintf (stderr, "New msg delay: %llu\n",
- (unsigned long long )fc->msg_delay.rel_value);
}
GNUNET_STATISTICS_update (fc->stats,
_("# fragment acknowledgements received"), 1,
Modified: gnunet/src/transport/plugin_transport_udp.c
===================================================================
--- gnunet/src/transport/plugin_transport_udp.c 2012-10-22 12:36:41 UTC (rev
24451)
+++ gnunet/src/transport/plugin_transport_udp.c 2012-10-22 12:54:07 UTC (rev
24452)
@@ -1241,7 +1241,7 @@
s->addrlen = len;
s->target = *target;
s->sock_addr = (const struct sockaddr *) &s[1];
- s->last_expected_ack_delay = GNUNET_TIME_UNIT_SECONDS;
+ s->last_expected_ack_delay = GNUNET_TIME_relative_multiply
(GNUNET_TIME_UNIT_MILLISECONDS, 250);
s->last_expected_msg_delay = GNUNET_TIME_UNIT_MILLISECONDS;
s->flow_delay_from_other_peer = GNUNET_TIME_UNIT_ZERO_ABS;
s->flow_delay_for_other_peer = GNUNET_TIME_UNIT_ZERO;
@@ -1567,9 +1567,6 @@
frag_ctx->timeout = GNUNET_TIME_absolute_add(GNUNET_TIME_absolute_get(),
to);
frag_ctx->payload_size = msgbuf_size; /* unfragmented message size without
UDP overhead */
frag_ctx->on_wire_size = 0; /* bytes with UDP and fragmentation overhead */
- fprintf (stderr, "New fc with msg delay: %llu and ack delay %llu\n",
- (unsigned long long )s->last_expected_msg_delay.rel_value,
- (unsigned long long )s->last_expected_ack_delay.rel_value);
frag_ctx->frag = GNUNET_FRAGMENT_context_create (plugin->env->stats,
UDP_MTU,
&plugin->tracker,
@@ -1578,6 +1575,7 @@
&udp->header,
&enqueue_fragment,
frag_ctx);
+ s->frag_ctx = frag_ctx;
GNUNET_STATISTICS_update (plugin->env->stats,
"# UDP, fragmented msgs, messages, pending",
1, GNUNET_NO);
@@ -1850,8 +1848,8 @@
uint32_t delay = 0;
struct UDP_MessageWrapper *udpw;
struct Session *s;
+ struct LookupContext l_ctx;
- struct LookupContext l_ctx;
l_ctx.addr = rc->src_addr;
l_ctx.addrlen = rc->addr_len;
l_ctx.res = NULL;
@@ -1913,8 +1911,8 @@
socklen_t fromlen)
{
struct UDP_MessageWrapper dummy;
- struct UDP_MessageWrapper * udpw;
- struct UDP_MessageWrapper * tmp;
+ struct UDP_MessageWrapper *udpw;
+ struct UDP_MessageWrapper *tmp;
const struct GNUNET_MessageHeader *ack;
const struct UDP_ACK_Message *udp_ack;
struct LookupContext l_ctx;
@@ -1932,15 +1930,18 @@
l_ctx.addrlen = fromlen;
l_ctx.res = NULL;
GNUNET_CONTAINER_multihashmap_iterate (plugin->sessions,
- &lookup_session_by_addr_it,
- &l_ctx);
+ &lookup_session_by_addr_it,
+ &l_ctx);
s = l_ctx.res;
- if ((s == NULL) || (s->frag_ctx == NULL))
+ if ((NULL == s) || (NULL == s->frag_ctx))
+ {
return;
+ }
flow_delay.rel_value = (uint64_t) ntohl (udp_ack->delay);
- LOG (GNUNET_ERROR_TYPE_DEBUG, "We received a sending delay of %llu\n",
+ LOG (GNUNET_ERROR_TYPE_DEBUG,
+ "We received a sending delay of %llu\n",
flow_delay.rel_value);
s->flow_delay_from_other_peer =
GNUNET_TIME_relative_to_absolute (flow_delay);
@@ -1955,7 +1956,6 @@
if (0 != memcmp (&l_ctx.res->target, &udp_ack->sender, sizeof (struct
GNUNET_PeerIdentity)))
GNUNET_break (0);
-
if (GNUNET_OK != GNUNET_FRAGMENT_process_ack (s->frag_ctx->frag, ack))
{
LOG (GNUNET_ERROR_TYPE_DEBUG,
@@ -1994,7 +1994,7 @@
while (udpw!= NULL)
{
tmp = udpw->next;
- if ((udpw->frag_ctx != NULL) && (udpw->frag_ctx == s->frag_ctx))
+ if ((NULL != udpw->frag_ctx) && (udpw->frag_ctx == s->frag_ctx))
{
dequeue (plugin, udpw);
GNUNET_free (udpw);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r24452 - in gnunet/src: fragmentation transport,
gnunet <=