More fixes for #3522
[oweals/gnunet.git] / src / namestore / gnunet-namestore.c
index 8c8c7660e5677c3a882115f46d47182365a858d1..4703818687675779edb4da8dadd4b5177c2160eb 100644 (file)
@@ -501,18 +501,46 @@ get_existing_record (void *cls,
       ret = 1;
       test_finished ();
       return;
-    case GNUNET_DNSPARSER_TYPE_NS:
-      if ( (GNUNET_DNSPARSER_TYPE_A == type) ||
-          (GNUNET_DNSPARSER_TYPE_AAAA == type) )
-       break;
+    }
+  }
+  switch (type)
+  {
+  case GNUNET_DNSPARSER_TYPE_CNAME:
+    if (0 != rd_count)
+    {
       fprintf (stderr,
-               _("A %s record exists already under `%s', only A/AAAA records can be added.\n"),
-               "NS",
-               rec_name);
+               _("Records already exist under `%s', cannot add `%s' record.\n"),
+               rec_name,
+               "CNAME");
+      ret = 1;
+      test_finished ();
+      return;
+    }
+    break;
+  case GNUNET_GNSRECORD_TYPE_PKEY:
+    if (0 != rd_count)
+    {
+      fprintf (stderr,
+               _("Records already exist under `%s', cannot add `%s' record.\n"),
+               rec_name,
+               "PKEY");
+      ret = 1;
+      test_finished ();
+      return;
+    }
+    break;
+  case GNUNET_GNSRECORD_TYPE_GNS2DNS:
+    if (0 != rd_count)
+    {
+      fprintf (stderr,
+               _("Records already exist under `%s', cannot add `%s' record.\n"),
+               rec_name,
+               "GNS2DNS");
       ret = 1;
       test_finished ();
       return;
     }
+    break;
   }
   memset (rdn, 0, sizeof (struct GNUNET_GNSRECORD_Data));
   memcpy (&rdn[1], rd, rd_count * sizeof (struct GNUNET_GNSRECORD_Data));
@@ -836,7 +864,11 @@ testservice_task (void *cls,
     char sname[64];
     struct GNUNET_CRYPTO_EcdsaPublicKey pkey;
 
-    if ( (2 != (sscanf (uri, "gnunet://gns/%52s/%63s", sh, sname)) ) ||
+    GNUNET_STRINGS_utf8_tolower (uri, uri);
+    if ( (2 != (sscanf (uri,
+                        "gnunet://gns/%52s/%63s",
+                        sh,
+                        sname)) ) ||
          (GNUNET_OK != GNUNET_CRYPTO_ecdsa_public_key_from_string (sh, strlen (sh), &pkey)) )
     {
       fprintf (stderr,