From 0e16e2c10f6790bd231a7090212f6f856577418c Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Mon, 19 Dec 2011 20:48:41 +0000 Subject: [PATCH] -do not crash on exit if we are not connected to statistics while trying to submit mandatory values; just force instant connect --- src/statistics/statistics_api.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/statistics/statistics_api.c b/src/statistics/statistics_api.c index ca435a371..f4f91538a 100644 --- a/src/statistics/statistics_api.c +++ b/src/statistics/statistics_api.c @@ -904,12 +904,25 @@ GNUNET_STATISTICS_destroy (struct GNUNET_STATISTICS_Handle *h, int sync_first) h->do_destroy = GNUNET_YES; if ((h->current != NULL) && (h->th == NULL)) { - timeout = GNUNET_TIME_absolute_get_remaining (h->current->timeout); - h->th = + if (NULL == h->client) + { + /* instant-connect (regardless of back-off) to submit final value */ + if (GNUNET_SCHEDULER_NO_TASK != h->backoff_task) + { + GNUNET_SCHEDULER_cancel (h->backoff_task); + h->backoff_task = GNUNET_SCHEDULER_NO_TASK; + } + h->client = GNUNET_CLIENT_connect ("statistics", h->cfg); + } + if (NULL != h->client) + { + timeout = GNUNET_TIME_absolute_get_remaining (h->current->timeout); + h->th = GNUNET_CLIENT_notify_transmit_ready (h->client, h->current->msize, timeout, GNUNET_YES, &transmit_action, h); - GNUNET_assert (NULL != h->th); + GNUNET_assert (NULL != h->th); + } } if (h->th != NULL) return; -- 2.25.1