[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r11371 - gnunet/src/datastore
From: |
gnunet |
Subject: |
[GNUnet-SVN] r11371 - gnunet/src/datastore |
Date: |
Fri, 14 May 2010 17:11:10 +0200 |
Author: grothoff
Date: 2010-05-14 17:11:10 +0200 (Fri, 14 May 2010)
New Revision: 11371
Modified:
gnunet/src/datastore/datastore_api.c
Log:
fixes
Modified: gnunet/src/datastore/datastore_api.c
===================================================================
--- gnunet/src/datastore/datastore_api.c 2010-05-14 13:02:42 UTC (rev
11370)
+++ gnunet/src/datastore/datastore_api.c 2010-05-14 15:11:10 UTC (rev
11371)
@@ -243,19 +243,32 @@
struct GNUNET_DATASTORE_QueueEntry *qe;
if (h->client != NULL)
- GNUNET_CLIENT_disconnect (h->client, GNUNET_NO);
+ {
+ GNUNET_CLIENT_disconnect (h->client, GNUNET_NO);
+ h->client = NULL;
+ }
if (h->reconnect_task != GNUNET_SCHEDULER_NO_TASK)
- GNUNET_SCHEDULER_cancel (h->sched,
- h->reconnect_task);
- h->client = NULL;
+ {
+ GNUNET_SCHEDULER_cancel (h->sched,
+ h->reconnect_task);
+ h->reconnect_task = GNUNET_SCHEDULER_NO_TASK;
+ }
while (NULL != (qe = h->queue_head))
{
- GNUNET_CONTAINER_DLL_remove (h->queue_head,
- h->queue_tail,
- qe);
if (NULL != qe->response_proc)
- qe->response_proc (qe, NULL);
- GNUNET_free (qe);
+ {
+ qe->response_proc (qe, NULL);
+ }
+ else
+ {
+ GNUNET_CONTAINER_DLL_remove (h->queue_head,
+ h->queue_tail,
+ qe);
+ if (qe->task != GNUNET_SCHEDULER_NO_TASK)
+ GNUNET_SCHEDULER_cancel (h->sched,
+ qe->task);
+ GNUNET_free (qe);
+ }
}
if (GNUNET_YES == drop)
{
@@ -435,6 +448,8 @@
static void
do_disconnect (struct GNUNET_DATASTORE_Handle *h)
{
+ if (h->client == NULL)
+ return;
GNUNET_CLIENT_disconnect (h->client, GNUNET_NO);
h->client = NULL;
h->reconnect_task = GNUNET_SCHEDULER_add_delayed (h->sched,
@@ -573,9 +588,17 @@
GNUNET_CONTAINER_DLL_remove (h->queue_head,
h->queue_tail,
qe);
+ if (qe->task != GNUNET_SCHEDULER_NO_TASK)
+ {
+ GNUNET_SCHEDULER_cancel (h->sched,
+ qe->task);
+ qe->task = GNUNET_SCHEDULER_NO_TASK;
+ }
GNUNET_free (qe);
if (msg == NULL)
- {
+ {
+ if (NULL == h->client)
+ return; /* forced disconnect */
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
_("Failed to receive response from database.\n"));
do_disconnect (h);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r11371 - gnunet/src/datastore,
gnunet <=