gnunet-svn
[Top][All Lists]
Advanced

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

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


From: gnunet
Subject: [GNUnet-SVN] r22422 - gnunet/src/transport
Date: Mon, 2 Jul 2012 09:52:35 +0200

Author: wachs
Date: 2012-07-02 09:52:35 +0200 (Mon, 02 Jul 2012)
New Revision: 22422

Modified:
   gnunet/src/transport/gnunet-service-transport_neighbours.c
Log:
fix for mantis 2445 & 2471


Modified: gnunet/src/transport/gnunet-service-transport_neighbours.c
===================================================================
--- gnunet/src/transport/gnunet-service-transport_neighbours.c  2012-07-01 
22:12:33 UTC (rev 22421)
+++ gnunet/src/transport/gnunet-service-transport_neighbours.c  2012-07-02 
07:52:35 UTC (rev 22422)
@@ -870,7 +870,7 @@
 {
   struct MessageQueue *mq;
   struct GNUNET_TRANSPORT_PluginFunctions *papi;
-  //struct GNUNET_HELLO_Address *old_address;
+  struct GNUNET_HELLO_Address *backup_primary;
 
   n->is_active = NULL; /* always free'd by its own continuation! */
 
@@ -893,12 +893,17 @@
     disconnect_notify_cb (callback_cls, &n->id);
   }
 
+  n->state = S_DISCONNECT_FINISHED;
 
-  /* cut transport-level connection */
-  //old_address = GNUNET_HELLO_address_copy(n->primary_address.address);
+  if (NULL != n->primary_address.address)
+    backup_primary = GNUNET_HELLO_address_copy(n->primary_address.address);
+  else
+    backup_primary = NULL;
 
+  /* free addresses and mark as unused */
+  free_address (&n->primary_address);
+  free_address (&n->alternative_address);
 
-
   /* FIXME-PLUGIN-API: This does not seem to guarantee that all
      transport sessions eventually get killed due to inactivity; they
      MUST have their own timeout logic (but at least TCP doesn't have
@@ -909,17 +914,14 @@
      them! Killing all sessions like this seems to be very, very
      wrong. */
 
+  /* cut transport-level connection */
   if ((GNUNET_NO == keep_sessions) &&
-      (NULL != n->primary_address.address) &&
-      (NULL != (papi = GST_plugins_find 
(n->primary_address.address->transport_name))))
+      (NULL != backup_primary) &&
+      (NULL != (papi = GST_plugins_find (backup_primary->transport_name))))
     papi->disconnect (papi->cls, &n->id);
 
+  GNUNET_free_non_null (backup_primary);
 
-  n->state = S_DISCONNECT_FINISHED;
-
-  free_address (&n->primary_address);
-  free_address (&n->alternative_address);
-
   GNUNET_assert (GNUNET_YES ==
                  GNUNET_CONTAINER_multihashmap_remove (neighbours,
                                                        &n->id.hashPubKey, n));




reply via email to

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