#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.ecc"
+
/**
* Our public key.
*/
-static struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded my_public_key;
+static struct GNUNET_CRYPTO_EccPublicKeyBinaryEncoded my_public_key;
/**
* Our identity.
/**
* Our private key.
*/
-static struct GNUNET_CRYPTO_RsaPrivateKey *my_private_key;
+static struct GNUNET_CRYPTO_EccPrivateKey *my_private_key;
/**
* Our configuration.
/**
* 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);
}
env_receive (void *cls,
const struct GNUNET_PeerIdentity *peer,
const struct GNUNET_MessageHeader *message,
- const struct GNUNET_ATS_Information *ats,
- uint32_t ats_count,
struct Session * session,
const char *sender_address,
uint16_t sender_address_len)
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)
{
}
+static void
+env_update_metrics (void *cls,
+ const struct GNUNET_PeerIdentity *peer,
+ const char *address,
+ uint16_t address_len,
+ struct Session *session,
+ struct GNUNET_ATS_Information *ats,
+ uint32_t ats_count)
+{
+}
+
+
static void
setup_plugin_environment ()
{
env.receive = &env_receive;
env.notify_address = &env_notify_address;
env.get_address_type = &env_get_address_type;
+ env.update_address_metrics = &env_update_metrics;
env.get_our_hello = &env_get_our_hello;
env.session_end = &env_session_end;
}
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 */
"NEIGHBOUR_LIMIT",
&tneigh)) ||
(GNUNET_OK != GNUNET_CONFIGURATION_get_value_filename (c,
- "GNUNETD", "HOSTKEY",
+ "PEER", "PRIVATE_KEY",
&keyfile)))
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
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_directory_create_for_file (keyfile))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ _("Could not create a directory for hostkey `%s'. Exiting.\n"),
+ keyfile);
+ end_badly_now ();
+ return;
+ }
+
+ 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);
+ my_private_key = GNUNET_CRYPTO_ecc_key_create_from_file (keyfile);
GNUNET_free (keyfile);
if (NULL == my_private_key)
{
end_badly_now ();
return;
}
- GNUNET_CRYPTO_rsa_key_get_public (my_private_key, &my_public_key);
+ GNUNET_CRYPTO_ecc_key_get_public (my_private_key, &my_public_key);
GNUNET_CRYPTO_hash (&my_public_key, sizeof (my_public_key),
&my_identity.hashPubKey);
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",