gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r16948 - gnunet/src/transport


From: gnunet
Subject: [GNUnet-SVN] r16948 - gnunet/src/transport
Date: Mon, 19 Sep 2011 11:39:29 +0200

Author: grothoff
Date: 2011-09-19 11:39:28 +0200 (Mon, 19 Sep 2011)
New Revision: 16948

Modified:
   gnunet/src/transport/gnunet-service-transport.c
   gnunet/src/transport/gnunet-service-transport_validation.c
Log:
do latency computation - #1768

Modified: gnunet/src/transport/gnunet-service-transport.c
===================================================================
--- gnunet/src/transport/gnunet-service-transport.c     2011-09-19 09:38:36 UTC 
(rev 16947)
+++ gnunet/src/transport/gnunet-service-transport.c     2011-09-19 09:39:28 UTC 
(rev 16948)
@@ -241,13 +241,17 @@
       break;
     }
   }
-
   GNUNET_assert ((ats_count > 0) && (ats != NULL));
-
+  /*
+     FIXME: this gives an address that might not have been validated to
+     ATS for 'selection', which is probably not what we want; this 
+     might be particularly wrong (as in, possibly hiding bugs with address
+     validation) as 'GNUNET_ATS_address_update' currently ignores
+     the expiration given.
+  */
   GNUNET_ATS_address_update (GST_ats, peer, GNUNET_TIME_absolute_get (),       
 /* valid at least until right now... */
                              plugin_name, session, sender_address,
                              sender_address_len, ats, ats_count);
-
   return ret;
 }
 

Modified: gnunet/src/transport/gnunet-service-transport_validation.c
===================================================================
--- gnunet/src/transport/gnunet-service-transport_validation.c  2011-09-19 
09:38:36 UTC (rev 16947)
+++ gnunet/src/transport/gnunet-service-transport_validation.c  2011-09-19 
09:39:28 UTC (rev 16948)
@@ -394,6 +394,7 @@
   struct ValidationEntry *ve;
   struct GNUNET_PeerIdentity pid;
   struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded public_key;
+  struct GNUNET_TRANSPORT_ATS_Information ats;
 
   if (GNUNET_TIME_absolute_get_remaining (expiration).rel_value == 0)
     return GNUNET_OK;           /* expired */
@@ -405,11 +406,8 @@
   }
   ve = find_validation_entry (&public_key, &pid, tname, addr, addrlen);
   ve->valid_until = GNUNET_TIME_absolute_max (ve->valid_until, expiration);
-  struct GNUNET_TRANSPORT_ATS_Information ats;
-
   ats.type = htonl (GNUNET_TRANSPORT_ATS_ARRAY_TERMINATOR);
   ats.value = htonl (0);
-
   GNUNET_ATS_address_update (GST_ats, &pid, ve->valid_until, tname, NULL, addr,
                              addrlen, &ats, 1);
   return GNUNET_OK;
@@ -979,12 +977,18 @@
 
   /* validity achieved, remember it! */
   ve->valid_until = GNUNET_TIME_relative_to_absolute 
(HELLO_ADDRESS_EXPIRATION);
-  struct GNUNET_TRANSPORT_ATS_Information ats;
+  {
+    struct GNUNET_TRANSPORT_ATS_Information ats[2];
 
-  ats.type = htonl (GNUNET_TRANSPORT_ATS_ARRAY_TERMINATOR);
-  ats.value = htonl (0);
-  GNUNET_ATS_address_update (GST_ats, &ve->pid, ve->valid_until, 
ve->transport_name, NULL, ve->addr, ve->addrlen, &ats, 1);     /* FIXME: 
compute and add latency here... */
-
+    ats[0].type = htonl (GNUNET_TRANSPORT_ATS_QUALITY_NET_DELAY);
+    ats[0].value = htonl ((uint32_t) GNUNET_TIME_absolute_get_duration 
(ve->send_time).rel_value);
+    ats[1].type = htonl (GNUNET_TRANSPORT_ATS_ARRAY_TERMINATOR);
+    ats[1].value = htonl (0);
+    GNUNET_ATS_address_update (GST_ats, &ve->pid, ve->valid_until, 
+                              ve->transport_name, NULL, ve->addr, ve->addrlen, 
+                              ats, 2);
+  }
+  
   /* build HELLO to store in PEERINFO */
   ve->copied = GNUNET_NO;
   hello = GNUNET_HELLO_create (&ve->public_key, &add_valid_peer_address, ve);




reply via email to

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