#define WAIT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 5)
#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 30)
+#define HOSTKEY_FILE "test_plugin_hostkey"
+
/**
* Our public key.
*/
/**
* Timeout task
*/
-static GNUNET_SCHEDULER_TaskIdentifier timeout_task;
+static GNUNET_SCHEDULER_TaskIdentifier timeout_endbadly;
/**
* Timeout task
unsigned int addresses_reported;
+unsigned int pretty_printers_running;
+
/**
* Did the test pass or fail?
*/
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);
{
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, &ok);
+ 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,
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);
}
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 ();
}
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,
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)
{
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 */
return;
}
+ if (GNUNET_OK != GNUNET_DISK_file_test (HOSTKEY_FILE))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ _("Hostkey `%s' missing. Exiting.\n"),
+ HOSTKEY_FILE);
+ }
+
+ if (GNUNET_OK != GNUNET_DISK_file_copy (HOSTKEY_FILE, keyfile))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ _("Could not copy hostkey `%s' to destination `%s'. Exiting.\n"),
+ HOSTKEY_FILE, keyfile);
+ end_badly_now ();
+ return;
+ }
+
+
max_connect_per_transport = (uint32_t) tneigh;
my_private_key = GNUNET_CRYPTO_rsa_key_create_from_file (keyfile);
GNUNET_free (keyfile);
NULL);
}
-
/* Loading plugin */
GNUNET_log (GNUNET_ERROR_TYPE_INFO, _("Loading transport plugin %s\n"), plugin);
GNUNET_asprintf (&libname, "libgnunet_plugin_transport_%s", plugin);
end_badly_now ();
return;
}
+
}
};
int ret;
+ GNUNET_DISK_directory_remove ("/tmp/test-gnunetd-plugin-transport");
+
char *const argv_prog[] = {
"test_plugin_transport",
"-c",