gnunet-svn
[Top][All Lists]
Advanced

[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);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]