More API function tests...
[oweals/gnunet.git] / src / gns / gnunet-service-gns_shorten.c
index 25b8a033f565894e0fd71012e7577035fc1db9d1..9aa0419aa3614702f288e5aa93a0bd8149241b61 100644 (file)
@@ -1,6 +1,6 @@
 /*
      This file is part of GNUnet.
-     (C) 2011-2013 Christian Grothoff (and other contributing authors)
+     Copyright (C) 2011-2013 GNUnet e.V.
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -14,8 +14,8 @@
 
      You should have received a copy of the GNU General Public License
      along with GNUnet; see the file COPYING.  If not, write to the
-     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-     Boston, MA 02111-1307, USA.
+     Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+     Boston, MA 02110-1301, USA.
 */
 
 /**
@@ -106,7 +106,7 @@ struct GetPseuAuthorityHandle
   /**
    * Task to abort DHT lookup operation.
    */
-  GNUNET_SCHEDULER_TaskIdentifier timeout_task;
+  struct GNUNET_SCHEDULER_Task * timeout_task;
 
 };
 
@@ -160,10 +160,10 @@ free_get_pseu_authority_handle (struct GetPseuAuthorityHandle *gph)
     GNUNET_NAMECACHE_cancel (gph->namecache_task);
     gph->namecache_task = NULL;
   }
-  if (GNUNET_SCHEDULER_NO_TASK != gph->timeout_task)
+  if (NULL != gph->timeout_task)
   {
     GNUNET_SCHEDULER_cancel (gph->timeout_task);
-    gph->timeout_task = GNUNET_SCHEDULER_NO_TASK;
+    gph->timeout_task = NULL;
   }
   GNUNET_CONTAINER_DLL_remove (gph_head, gph_tail, gph);
   GNUNET_free_non_null (gph->current_label);
@@ -325,6 +325,21 @@ process_pseu_lookup_ns (void *cls,
 }
 
 
+/**
+ * Encountered an error in zone-to-name lookup, give up on shortening.
+ */
+static void
+zone_to_name_error_cb (void *cls)
+{
+  struct GetPseuAuthorityHandle* gph = cls;
+
+  gph->namestore_task = NULL;
+  GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+              "Shortening aborted, internal error talking to namestore\n");
+  free_get_pseu_authority_handle (gph);
+}
+
+
 /**
  * Callback called by namestore for a zone to name result.  We're
  * trying to see if a short name for a given zone already exists.
@@ -343,9 +358,6 @@ process_zone_to_name_discover (void *cls,
                               const struct GNUNET_GNSRECORD_Data *rd)
 {
   struct GetPseuAuthorityHandle* gph = cls;
-#if 0
-  struct GNUNET_HashCode lookup_key;
-#endif
 
   gph->namestore_task = NULL;
   if (0 != rd_len)
@@ -391,8 +403,8 @@ GNS_shorten_start (const char *original_label,
     GNUNET_break (0);
     return;
   }
-  GNUNET_CRYPTO_ecdsa_key_get_public(shorten_zone, &shorten_pub);
-  if (0 == memcmp (&shorten_pub, pub, sizeof (pub)))
+  GNUNET_CRYPTO_ecdsa_key_get_public (shorten_zone, &shorten_pub);
+  if (0 == memcmp (&shorten_pub, pub, sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey)))
   {
     /* Do not shorten the shorten zone */
     return;
@@ -412,6 +424,8 @@ GNS_shorten_start (const char *original_label,
   gph->namestore_task = GNUNET_NAMESTORE_zone_to_name (namestore_handle,
                                                        shorten_zone,
                                                        pub,
+                                                       &zone_to_name_error_cb,
+                                                       gph,
                                                        &process_zone_to_name_discover,
                                                        gph);
 }