[Top][All Lists]
[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 */
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r22104 - gnunet/src/ats,
gnunet <=