-doxygen
[oweals/gnunet.git] / src / transport / test_plugin_transport.c
index c48fc2d490022ac9887c96b257765de9ee0e9bd9..98806fbb83362a184f7330cb4fa438dd3fbbc802 100644 (file)
  */
 
 #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;
 
 /**
  * Our private key.
  */
-static struct GNUNET_CRYPTO_EccPrivateKey *my_private_key;
+static struct GNUNET_CRYPTO_EddsaPrivateKey *my_private_key;
 
 /**
  * Our configuration.
@@ -197,6 +188,7 @@ end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
   struct AddressWrapper *w;
   int c = 0;
+
   timeout_endbadly = GNUNET_SCHEDULER_NO_TASK;
   if (GNUNET_SCHEDULER_NO_TASK != timeout_wait)
   {
@@ -341,6 +333,7 @@ env_notify_address (void *cls,
                     const char *plugin)
 {
   struct AddressWrapper *w;
+  struct AddressWrapper *wtmp;
   void *s2a;
   size_t s2a_len;
 
@@ -350,7 +343,17 @@ env_notify_address (void *cls,
       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);
@@ -495,7 +498,7 @@ env_get_our_hello ()
 }
 
 
-static void 
+static void
 env_session_end (void *cls,
                 const struct GNUNET_PeerIdentity *peer,
                 struct Session * session)
@@ -523,7 +526,6 @@ setup_plugin_environment ()
   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;
@@ -532,6 +534,7 @@ setup_plugin_environment ()
   env.session_end = &env_session_end;
 }
 
+
 static int
 handle_helper_message (void *cls, void *client,
                        const struct GNUNET_MessageHeader *hdr)
@@ -577,6 +580,7 @@ run (void *cls, char *const *args, const char *cfgfile,
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
                "Could not create statistics.  Exiting.\n");
+    GNUNET_free (keyfile);
     end_badly_now ();
     return;
   }
@@ -613,7 +617,7 @@ run (void *cls, char *const *args, const char *cfgfile,
 
 
   max_connect_per_transport = (uint32_t) tneigh;
-  my_private_key = GNUNET_CRYPTO_ecc_key_create_from_file (keyfile);
+  my_private_key = GNUNET_CRYPTO_eddsa_key_create_from_file (keyfile);
   GNUNET_free (keyfile);
   if (NULL == my_private_key)
   {
@@ -622,12 +626,9 @@ run (void *cls, char *const *args, const char *cfgfile,
     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_eddsa_key_get_public (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 ();