gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r22104 - gnunet/src/ats


From: gnunet
Subject: [GNUnet-SVN] r22104 - gnunet/src/ats
Date: Tue, 19 Jun 2012 11:39:06 +0200

Author: wachs
Date: 2012-06-19 11:39:06 +0200 (Tue, 19 Jun 2012)
New Revision: 22104

Modified:
   gnunet/src/ats/gnunet-service-ats_addresses.c
Log:
fix a major bug: delete session for unknown address (addr==NULL, length==0)


Modified: gnunet/src/ats/gnunet-service-ats_addresses.c
===================================================================
--- gnunet/src/ats/gnunet-service-ats_addresses.c       2012-06-19 09:33:57 UTC 
(rev 22103)
+++ gnunet/src/ats/gnunet-service-ats_addresses.c       2012-06-19 09:39:06 UTC 
(rev 22104)
@@ -223,35 +223,65 @@
 {
   struct CompareAddressContext *cac = cls;
   struct ATS_Address *aa = value;
-/*
-  GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-              "Comparing to: %s %s %u session %u\n",
-              GNUNET_i2s (&aa->peer), aa->plugin, aa->addr_len, 
aa->session_id);
 
-*/
-  /* find an exact matching address: aa->addr == cac->search->addr && 
aa->session == cac->search->session */
+  /* Find an matching exact address:
+   *
+   * Compare by:
+   * aa->addr_len == cac->search->addr_len
+   * aa->plugin == cac->search->plugin
+   * aa->addr == cac->search->addr
+   * aa->session == cac->search->session
+   *
+   * return as exact address
+   */
   if ((aa->addr_len == cac->search->addr_len) && (0 == strcmp (aa->plugin, 
cac->search->plugin)))
   {
       if ((0 == memcmp (aa->addr, cac->search->addr, aa->addr_len)) && 
(aa->session_id == cac->search->session_id))
-      {
         cac->exact_address = aa;
-      }
   }
 
-  /* find an matching address: aa->addr == cac->search->addr && aa->session == 
0 */
-  /* this address can be used to be updated */
+  /* Find an matching base address:
+   *
+   * Properties:
+   *
+   * aa->session_id == 0
+   *
+   * Compare by:
+   * aa->addr_len == cac->search->addr_len
+   * aa->plugin == cac->search->plugin
+   * aa->addr == cac->search->addr
+   *
+   * return as base address
+   */
   if ((aa->addr_len == cac->search->addr_len) && (0 == strcmp (aa->plugin, 
cac->search->plugin)))
   {
       if ((0 == memcmp (aa->addr, cac->search->addr, aa->addr_len)) && 
(aa->session_id == 0))
-      {
         cac->base_address = aa;
-      }
   }
 
+  /* Find an matching exact address based on session:
+   *
+   * Properties:
+   *
+   * cac->search->addr_len == 0
+   * cac->addr == NULL
+   *
+   * Compare by:
+   * aa->plugin == cac->search->plugin
+   * aa->session_id == cac->search->session_id
+   *
+   * return as exact address
+   */
+  if ((0 == cac->search->addr_len) && (NULL == cac->search->addr))
+  {
+      if ((0 == strcmp (aa->plugin, cac->search->plugin)) && (aa->session_id 
== cac->search->session_id))
+        cac->exact_address = aa;
+  }
+
   if (cac->exact_address == NULL)
-    return GNUNET_YES;
+    return GNUNET_YES; /* Continue iteration to find exact address */
   else
-    return GNUNET_NO;
+    return GNUNET_NO; /* Stop iteration since we have an exact address */
 }
 
 




reply via email to

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