From 639e6fda1cc136d62673bcccb8c1bd2a0823299f Mon Sep 17 00:00:00 2001 From: Matthias Wachs Date: Fri, 7 Oct 2011 08:20:56 +0000 Subject: mem corruption --- src/transport/plugin_transport_http.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/transport/plugin_transport_http.c b/src/transport/plugin_transport_http.c index d3d1c7928..656f49c06 100644 --- a/src/transport/plugin_transport_http.c +++ b/src/transport/plugin_transport_http.c @@ -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, -- cgit v1.2.3