[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r24348 - gnunet/src/transport
From: |
gnunet |
Subject: |
[GNUnet-SVN] r24348 - gnunet/src/transport |
Date: |
Wed, 17 Oct 2012 11:05:29 +0200 |
Author: wachs
Date: 2012-10-17 11:05:29 +0200 (Wed, 17 Oct 2012)
New Revision: 24348
Modified:
gnunet/src/transport/test_plugin_transport.c
Log:
crash in test due to pending callbacks
Modified: gnunet/src/transport/test_plugin_transport.c
===================================================================
--- gnunet/src/transport/test_plugin_transport.c 2012-10-17 08:58:21 UTC
(rev 24347)
+++ gnunet/src/transport/test_plugin_transport.c 2012-10-17 09:05:29 UTC
(rev 24348)
@@ -96,7 +96,7 @@
/**
* Timeout task
*/
-static GNUNET_SCHEDULER_TaskIdentifier timeout_task;
+static GNUNET_SCHEDULER_TaskIdentifier timeout_endbadly;
/**
* Timeout task
@@ -120,6 +120,8 @@
unsigned int addresses_reported;
+unsigned int pretty_printers_running;
+
/**
* Did the test pass or fail?
*/
@@ -147,10 +149,10 @@
int c = 0;
ok = 0;
- if (GNUNET_SCHEDULER_NO_TASK != timeout_task)
+ if (GNUNET_SCHEDULER_NO_TASK != timeout_endbadly)
{
- GNUNET_SCHEDULER_cancel (timeout_task);
- timeout_task = GNUNET_SCHEDULER_NO_TASK;
+ GNUNET_SCHEDULER_cancel (timeout_endbadly);
+ timeout_endbadly = GNUNET_SCHEDULER_NO_TASK;
}
if (NULL != api)
GNUNET_PLUGIN_unload (libname, api);
@@ -193,13 +195,21 @@
{
struct AddressWrapper *w;
int c = 0;
- timeout_task = GNUNET_SCHEDULER_NO_TASK;
+ timeout_endbadly = GNUNET_SCHEDULER_NO_TASK;
if (GNUNET_SCHEDULER_NO_TASK != timeout_wait)
{
GNUNET_SCHEDULER_cancel (timeout_wait);
timeout_wait = GNUNET_SCHEDULER_NO_TASK;
}
+ if (pretty_printers_running > 0)
+ {
+ timeout_endbadly =
GNUNET_SCHEDULER_add_delayed(GNUNET_TIME_UNIT_SECONDS, &end_badly, NULL);
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ _("Have pending calls to pretty_printer ... deferring
shutdown\n"));
+ return;
+ }
+
if (NULL != cls)
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
@@ -267,12 +277,12 @@
GNUNET_SCHEDULER_cancel (timeout_wait);
timeout_wait = GNUNET_SCHEDULER_NO_TASK;
}
- if (GNUNET_SCHEDULER_NO_TASK != timeout_task)
+ if (GNUNET_SCHEDULER_NO_TASK != timeout_endbadly)
{
- GNUNET_SCHEDULER_cancel (timeout_task);
- timeout_task = GNUNET_SCHEDULER_NO_TASK;
+ GNUNET_SCHEDULER_cancel (timeout_endbadly);
+ timeout_endbadly = GNUNET_SCHEDULER_NO_TASK;
}
- timeout_task = GNUNET_SCHEDULER_add_now (&end_badly, NULL);
+ timeout_endbadly = GNUNET_SCHEDULER_add_now (&end_badly, NULL);
}
@@ -309,11 +319,13 @@
got_reply = GNUNET_YES;
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Pretty address : `%s'\n", buf);
+ pretty_printers_running --;
}
else
{
if (GNUNET_NO == got_reply)
{
+ pretty_printers_running --;
GNUNET_break (0);
end_badly_now ();
}
@@ -345,6 +357,7 @@
memcpy (w->addr, addr, addrlen);
GNUNET_CONTAINER_DLL_insert(head, tail, w);
got_reply = GNUNET_NO;
+ pretty_printers_running ++;
api->address_pretty_printer (api->cls, plugin, addr, addrlen,
GNUNET_YES, GNUNET_TIME_UNIT_MINUTES,
&address_pretty_printer_cb,
@@ -398,7 +411,9 @@
GNUNET_SCHEDULER_cancel (timeout_wait);
timeout_wait = GNUNET_SCHEDULER_NO_TASK;
}
+
timeout_wait = GNUNET_SCHEDULER_add_delayed (WAIT, &wait_end, NULL);
+
}
else if (GNUNET_NO == add_remove)
{
@@ -507,7 +522,7 @@
char *plugin;
char *sep;
- timeout_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, end_badly, &ok);
+ timeout_endbadly = GNUNET_SCHEDULER_add_delayed (TIMEOUT, end_badly, &ok);
cfg = c;
/* parse configuration */
@@ -580,7 +595,6 @@
NULL);
}
-
/* Loading plugin */
GNUNET_log (GNUNET_ERROR_TYPE_INFO, _("Loading transport plugin %s\n"),
plugin);
GNUNET_asprintf (&libname, "libgnunet_plugin_transport_%s", plugin);
@@ -641,6 +655,7 @@
end_badly_now ();
return;
}
+
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r24348 - gnunet/src/transport,
gnunet <=