gnunet-svn
[Top][All Lists]
Advanced

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

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


From: gnunet
Subject: [GNUnet-SVN] r22068 - gnunet/src/transport
Date: Mon, 18 Jun 2012 11:07:38 +0200

Author: wachs
Date: 2012-06-18 11:07:38 +0200 (Mon, 18 Jun 2012)
New Revision: 22068

Modified:
   gnunet/src/transport/gnunet-service-transport.c
   gnunet/src/transport/gnunet-service-transport_neighbours.c
   gnunet/src/transport/gnunet-service-transport_neighbours.h
Log:
-fix


Modified: gnunet/src/transport/gnunet-service-transport.c
===================================================================
--- gnunet/src/transport/gnunet-service-transport.c     2012-06-18 08:38:31 UTC 
(rev 22067)
+++ gnunet/src/transport/gnunet-service-transport.c     2012-06-18 09:07:38 UTC 
(rev 22068)
@@ -339,6 +339,7 @@
 {
   const char *transport_name = cls;
   struct GNUNET_HELLO_Address address;
+  int ret;
 
   GNUNET_assert (strlen (transport_name) > 0);
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Session %p to peer `%s' ended \n",
@@ -352,8 +353,13 @@
   address.address = NULL;
   address.address_length = 0;
   address.transport_name = transport_name;
-  GST_neighbours_session_terminated (peer, session);
-  GNUNET_ATS_address_destroyed (GST_ats, &address, session);
+  ret = GST_neighbours_session_terminated (peer, session);
+  if (GNUNET_NO == ret)
+  {
+    /* This was a session currently not used by
+     * neighbours so we have to destroy it here */
+    GNUNET_ATS_address_destroyed (GST_ats, &address, session);
+  }
 }
 
 

Modified: gnunet/src/transport/gnunet-service-transport_neighbours.c
===================================================================
--- gnunet/src/transport/gnunet-service-transport_neighbours.c  2012-06-18 
08:38:31 UTC (rev 22067)
+++ gnunet/src/transport/gnunet-service-transport_neighbours.c  2012-06-18 
09:07:38 UTC (rev 22068)
@@ -766,6 +766,7 @@
   {
     GST_validation_set_address_use (na->address, na->session, GNUNET_NO, 
__LINE__);
     GNUNET_ATS_address_in_use (GST_ats, na->address, na->session, GNUNET_NO);
+    GNUNET_ATS_address_destroyed (GST_ats, na->address, na->session);
   }
   na->ats_active = GNUNET_NO;
   if (NULL != na->address)
@@ -2681,8 +2682,10 @@
  *
  * @param peer identity of the peer where the session died
  * @param session session that is gone
+ * @param GNUNET_YES if this was a session used, GNUNET_NO if
+ *        this session was not in use
  */
-void
+int
 GST_neighbours_session_terminated (const struct GNUNET_PeerIdentity *peer,
                                    struct Session *session)
 {
@@ -2706,7 +2709,7 @@
     }
   }
   if (NULL == (n = lookup_neighbour (peer)))
-    return; /* can't affect us */
+    return GNUNET_NO; /* can't affect us */
   if (session != n->primary_address.session)
   {
     if (session == n->alternative_address.session)
@@ -2718,7 +2721,7 @@
       else
        GNUNET_break (0);
     }
-    return; /* doesn't affect us further */
+    return GNUNET_NO; /* doesn't affect us further */
   }
 
   n->expect_latency_response = GNUNET_NO;
@@ -2727,11 +2730,11 @@
   case S_NOT_CONNECTED:
     GNUNET_break (0);
     free_neighbour (n, GNUNET_NO);
-    return;
+    return GNUNET_YES;
   case S_INIT_ATS:
     GNUNET_break (0);
     free_neighbour (n, GNUNET_NO);
-    return;
+    return GNUNET_YES;
   case S_INIT_BLACKLIST:
   case S_CONNECT_SENT:
     free_address (&n->primary_address);
@@ -2747,7 +2750,7 @@
     /* error on inbound session; free neighbour entirely */
     free_address (&n->primary_address);
     free_neighbour (n, GNUNET_NO);
-    return;
+    return GNUNET_YES;
   case S_CONNECTED:
     free_address (&n->primary_address);
     n->state = S_RECONNECT_ATS;
@@ -2798,6 +2801,7 @@
   if (GNUNET_SCHEDULER_NO_TASK != n->task)
     GNUNET_SCHEDULER_cancel (n->task);
   n->task = GNUNET_SCHEDULER_add_now (&master_task, n);
+  return GNUNET_YES;
 }
 
 

Modified: gnunet/src/transport/gnunet-service-transport_neighbours.h
===================================================================
--- gnunet/src/transport/gnunet-service-transport_neighbours.h  2012-06-18 
08:38:31 UTC (rev 22067)
+++ gnunet/src/transport/gnunet-service-transport_neighbours.h  2012-06-18 
09:07:38 UTC (rev 22068)
@@ -195,8 +195,10 @@
  *
  * @param peer identity of the peer where the session died
  * @param session session that is gone
+ * @param GNUNET_YES if this was a session used, GNUNET_NO if
+ *        this session was not in use
  */
-void
+int
 GST_neighbours_session_terminated (const struct GNUNET_PeerIdentity *peer,
                                    struct Session *session);
 




reply via email to

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