From 85c91cf16bcb28522945d27ec1fb52477b603bef Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Wed, 1 Jun 2011 15:28:40 +0000 Subject: fix --- src/core/core_api.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'src/core') diff --git a/src/core/core_api.c b/src/core/core_api.c index 3dfc193dd..350a5129d 100644 --- a/src/core/core_api.c +++ b/src/core/core_api.c @@ -488,6 +488,17 @@ reconnect_later (struct GNUNET_CORE_Handle *h) struct PeerRecord *pr; GNUNET_assert (h->reconnect_task == GNUNET_SCHEDULER_NO_TASK); + while (NULL != (cm = h->control_pending_head)) + { + GNUNET_CONTAINER_DLL_remove (h->control_pending_head, + h->control_pending_tail, + cm); + if (cm->th != NULL) + cm->th->cm = NULL; + if (cm->cont != NULL) + cm->cont (cm->cont_cls, GNUNET_NO); + GNUNET_free (cm); + } if (h->client != NULL) { GNUNET_CLIENT_disconnect (h->client, GNUNET_NO); @@ -505,17 +516,6 @@ reconnect_later (struct GNUNET_CORE_Handle *h) h->reconnect_task = GNUNET_SCHEDULER_add_delayed (h->retry_backoff, &reconnect_task, h); - while (NULL != (cm = h->control_pending_head)) - { - GNUNET_CONTAINER_DLL_remove (h->control_pending_head, - h->control_pending_tail, - cm); - if (cm->th != NULL) - cm->th->cm = NULL; - if (cm->cont != NULL) - cm->cont (cm->cont_cls, GNUNET_NO); - GNUNET_free (cm); - } GNUNET_assert (h->control_pending_head == NULL); h->retry_backoff = GNUNET_TIME_relative_min (GNUNET_TIME_UNIT_SECONDS, h->retry_backoff); @@ -1486,11 +1486,6 @@ GNUNET_CORE_disconnect (struct GNUNET_CORE_Handle *handle) GNUNET_CLIENT_notify_transmit_ready_cancel (handle->cth); handle->cth = NULL; } - if (handle->client != NULL) - { - GNUNET_CLIENT_disconnect (handle->client, GNUNET_NO); - handle->client = NULL; - } while (NULL != (cm = handle->control_pending_head)) { GNUNET_CONTAINER_DLL_remove (handle->control_pending_head, @@ -1502,6 +1497,11 @@ GNUNET_CORE_disconnect (struct GNUNET_CORE_Handle *handle) cm->cont (cm->cont_cls, GNUNET_SYSERR); GNUNET_free (cm); } + if (handle->client != NULL) + { + GNUNET_CLIENT_disconnect (handle->client, GNUNET_NO); + handle->client = NULL; + } if (handle->reconnect_task != GNUNET_SCHEDULER_NO_TASK) { GNUNET_SCHEDULER_cancel (handle->reconnect_task); -- cgit v1.2.3