*/
#include "platform.h"
-#include "gnunet_common.h"
-#include "gnunet_constants.h"
#include "gnunet_util_lib.h"
#include "gnunet_hello_lib.h"
#include "gnunet_peerinfo_service.h"
#include "gnunet_statistics_service.h"
#include "gnunet_protocols.h"
-#include "gnunet_signatures.h"
#include "gnunet_transport_plugin.h"
-
#include "transport.h"
/**
/**
* Our public key.
*/
-static struct GNUNET_CRYPTO_EccPublicKeyBinaryEncoded my_public_key;
-
-/**
- * Our identity.
- */
static struct GNUNET_PeerIdentity my_identity;
/**
{
struct AddressWrapper *w;
int c = 0;
+
timeout_endbadly = GNUNET_SCHEDULER_NO_TASK;
if (GNUNET_SCHEDULER_NO_TASK != timeout_wait)
{
const char *plugin)
{
struct AddressWrapper *w;
- char *a2s;
+ struct AddressWrapper *wtmp;
void *s2a;
size_t s2a_len;
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Adding address of length %u\n", addrlen);
- w = GNUNET_malloc (sizeof (struct AddressWrapper));
+ for (wtmp = head; NULL != wtmp; wtmp = wtmp->next)
+ {
+ if ((addrlen == wtmp->addrlen) && (0 == memcmp (addr, wtmp->addr, addrlen)))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "Duplicate address notification .... \n");
+ return;
+ }
+ }
+
+ w = GNUNET_new (struct AddressWrapper);
w->addr = GNUNET_malloc (addrlen);
w->addrlen = addrlen;
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,
- w);
-
- a2s = strdup (api->address_to_string (api, w->addr, w->addrlen));
- if (NULL == a2s)
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Testing: address_to_string \n");
+ w->addrstring = strdup (api->address_to_string (api, w->addr, w->addrlen));
+ if (NULL == w->addrstring)
{
GNUNET_break (0);
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
end_badly_now();
return;
}
- w->addrstring = strdup (api->address_to_string (api, w->addr, w->addrlen));
- GNUNET_log (GNUNET_ERROR_TYPE_INFO,
- "Plugin added address `%s'\n", a2s);
+ else
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Plugin added address `%s'\n", w->addrstring);
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Testing address_to_string: OK\n");
+ }
- if ((GNUNET_OK != api->string_to_address (api, a2s, strlen (a2s)+1, &s2a, &s2a_len)) || (NULL == s2a))
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Testing: string_to_address \n");
+ s2a = NULL;
+ s2a_len = 0;
+ if ((GNUNET_OK != api->string_to_address (api, w->addrstring, strlen (w->addrstring)+1, &s2a, &s2a_len)) || (NULL == s2a))
{
GNUNET_break (0);
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
return;
}
+ /*
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Plugin creates `%s' %u\n",api->address_to_string (api, s2a, s2a_len), s2a_len);
+
+ int c1;
+ for (c1 = 0; c1 < s2a_len; c1++ )
+ fprintf (stderr, "%u == %u\n", ((char *) s2a)[c1], ((char *) w->addr)[c1]);
+ */
if (s2a_len != w->addrlen)
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Plugin creates different address length when converting address->string->address: %u != %u\n", w->addrlen, s2a_len);
}
- else
+ else if (0 != memcmp (s2a, w->addr, s2a_len))
{
- if (0 != memcmp (s2a, w->addr, s2a_len))
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "Plugin creates different address length when connecting back and forth!\n");
+ "Plugin creates different address length when converting back and forth %i!\n", memcmp (s2a, w->addr, s2a_len));
+ }
+ else
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Testing string_to_address: OK\n");
}
GNUNET_free (s2a);
- GNUNET_free (a2s);
+
+ pretty_printers_running ++;
+ api->address_pretty_printer (api->cls, plugin, addr, addrlen,
+ GNUNET_YES, GNUNET_TIME_UNIT_MINUTES,
+ &address_pretty_printer_cb,
+ w);
+
if (GNUNET_OK != api->check_address (api->cls, w->addr, w->addrlen))
{
GNUNET_break (0);
}
-static void
+static void
env_session_end (void *cls,
const struct GNUNET_PeerIdentity *peer,
struct Session * session)
env.my_identity = &my_identity;
env.max_connections = max_connect_per_transport;
env.stats = stats;
-
env.receive = &env_receive;
env.notify_address = &env_notify_address;
env.get_address_type = &env_get_address_type;
env.session_end = &env_session_end;
}
+
static int
handle_helper_message (void *cls, void *client,
const struct GNUNET_MessageHeader *hdr)
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Hostkey `%s' missing. Exiting.\n",
HOSTKEY_FILE);
+ GNUNET_free (keyfile);
+ end_badly_now ();
+ return;
}
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);
+ GNUNET_free (keyfile);
end_badly_now ();
return;
}
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Could not copy hostkey `%s' to destination `%s'. Exiting.\n",
HOSTKEY_FILE, keyfile);
+ GNUNET_free (keyfile);
end_badly_now ();
return;
}
end_badly_now ();
return;
}
- 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);
-
+ GNUNET_CRYPTO_ecc_key_get_public_for_signature (my_private_key, &my_identity.public_key);
- hello = GNUNET_HELLO_create(&my_public_key, NULL, NULL, GNUNET_NO);
+ hello = GNUNET_HELLO_create (&my_identity.public_key, NULL, NULL, GNUNET_NO);
/* load plugins... */
setup_plugin_environment ();