From: Christian Grothoff Date: Fri, 12 Mar 2010 15:05:05 +0000 (+0000) Subject: handle being already disconnected X-Git-Tag: initial-import-from-subversion-38251~22491 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=4dd28eb24e1c2a585f842687e12692bf3d81fcff;p=oweals%2Fgnunet.git handle being already disconnected --- diff --git a/src/util/connection.c b/src/util/connection.c index c572d02de..10f53dcf9 100644 --- a/src/util/connection.c +++ b/src/util/connection.c @@ -1538,8 +1538,11 @@ GNUNET_CONNECTION_notify_transmit_ready_cancel (struct } else { - GNUNET_SCHEDULER_cancel (h->sh->sched, h->sh->write_task); - h->sh->write_task = GNUNET_SCHEDULER_NO_TASK; + if (h->sh->write_task != GNUNET_SCHEDULER_NO_TASK) + { + GNUNET_SCHEDULER_cancel (h->sh->sched, h->sh->write_task); + h->sh->write_task = GNUNET_SCHEDULER_NO_TASK; + } } h->notify_ready = NULL; } diff --git a/src/util/scheduler.c b/src/util/scheduler.c index 7b6f86c9e..d9b182244 100644 --- a/src/util/scheduler.c +++ b/src/util/scheduler.c @@ -30,7 +30,8 @@ #include "gnunet_time_lib.h" #ifdef LINUX #include "execinfo.h" -#define EXECINFO GNUNET_NO +#define EXECINFO GNUNET_YES +#define MAX_TRACE_DEPTH 50 #endif #define DEBUG_TASKS GNUNET_NO @@ -1095,13 +1096,13 @@ GNUNET_SCHEDULER_add_select (struct GNUNET_SCHEDULER_Handle * sched, { struct Task *t; #if EXECINFO - void *backtrace_array[50]; + void *backtrace_array[MAX_TRACE_DEPTH]; #endif t = GNUNET_malloc (sizeof (struct Task)); t->callback = task; t->callback_cls = task_cls; #if EXECINFO - t->num_backtrace_strings = backtrace(backtrace_array, 50); + t->num_backtrace_strings = backtrace(backtrace_array, MAX_TRACE_DEPTH); t->backtrace_strings = backtrace_symbols(backtrace_array, t->num_backtrace_strings); #endif if (rs != NULL) diff --git a/src/util/server.c b/src/util/server.c index 5fda7ae81..b3c03d710 100644 --- a/src/util/server.c +++ b/src/util/server.c @@ -1274,6 +1274,11 @@ GNUNET_SERVER_receive_done (struct GNUNET_SERVER_Client *client, int success) GNUNET_free (sb); return; } + if (client->server == NULL) + { + GNUNET_SERVER_client_disconnect (client); + return; + } client->restart_task = GNUNET_SCHEDULER_add_now (client->server->sched, &restart_processing, client);