mem corruption
authorMatthias Wachs <wachs@net.in.tum.de>
Fri, 7 Oct 2011 08:20:56 +0000 (08:20 +0000)
committerMatthias Wachs <wachs@net.in.tum.de>
Fri, 7 Oct 2011 08:20:56 +0000 (08:20 +0000)
src/transport/plugin_transport_http.c

index d3d1c79285b309476c22183b5e305c287194249e..656f49c0689b2dbdd3974da3e5d414369679d8a9 100644 (file)
@@ -1272,7 +1272,6 @@ LIBGNUNET_PLUGIN_TRANSPORT_DONE (void *cls)
   s = plugin->head;
   while (s != NULL)
   {
-    struct Session *t = s->next;
 #if DEBUG_HTTP
   GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
                    "Disconnecting `%s' \n", GNUNET_i2s (&s->target));
@@ -1281,10 +1280,7 @@ LIBGNUNET_PLUGIN_TRANSPORT_DONE (void *cls)
       GNUNET_assert (GNUNET_OK == client_disconnect (s));
     else
       GNUNET_assert (GNUNET_OK == server_disconnect (s));
-
-    GNUNET_CONTAINER_DLL_remove (plugin->head, plugin->tail, s);
-    delete_session (s);
-    s = t;
+    s = s->next;
   }
 
 #if DEBUG_HTTP
@@ -1301,6 +1297,16 @@ LIBGNUNET_PLUGIN_TRANSPORT_DONE (void *cls)
   /* Stop client */
   client_stop (plugin);
 
+  /* deleting up sessions */
+  s = plugin->head;
+  while (s != NULL)
+  {
+    struct Session *t = s->next;
+    GNUNET_CONTAINER_DLL_remove (plugin->head, plugin->tail, s);
+    delete_session (s);
+    s = t;
+  }
+
 
 #if DEBUG_HTTP
   GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,