gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r28649 - gnunet/src/gns


From: gnunet
Subject: [GNUnet-SVN] r28649 - gnunet/src/gns
Date: Thu, 15 Aug 2013 13:12:12 +0200

Author: grothoff
Date: 2013-08-15 13:12:11 +0200 (Thu, 15 Aug 2013)
New Revision: 28649

Modified:
   gnunet/src/gns/gnunet-service-gns.c
Log:
-fix #2994

Modified: gnunet/src/gns/gnunet-service-gns.c
===================================================================
--- gnunet/src/gns/gnunet-service-gns.c 2013-08-15 11:09:13 UTC (rev 28648)
+++ gnunet/src/gns/gnunet-service-gns.c 2013-08-15 11:12:11 UTC (rev 28649)
@@ -22,10 +22,6 @@
  * @brief GNUnet GNS service
  * @author Martin Schanzenbach
  * @author Christian Grothoff
- *
- * TODO:
- * - conversion of private to public records does NOT check if the
- *   records are actually public 
  */
 #include "platform.h"
 #include "gnunet_util_lib.h"
@@ -334,6 +330,9 @@
   struct GNUNET_HashCode query;
   struct GNUNET_TIME_Absolute expire; 
   size_t block_size;
+  struct GNUNET_NAMESTORE_RecordData rd_public[rd_count];
+  unsigned int rd_public_count;
+  unsigned int i;
 
   if (NULL == name)
   {
@@ -385,22 +384,28 @@
     return;
   }
 
-  /* FIXME: filter out records that are not public! */
+  /* filter out records that are not public! */
+  rd_public_count = 0;
+  for (i=0;i<rd_count;i++)
+    if (0 == (rd[i].flags & (GNUNET_NAMESTORE_RF_PRIVATE |
+                            GNUNET_NAMESTORE_RF_PENDING)))
+      rd_public[rd_public_count++] = rd[i];
 
+
   /* We got a set of records to publish */
-  if (0 == rd_count)
+  if (0 == rd_public_count)
   {
     zone_publish_task = GNUNET_SCHEDULER_add_now (&publish_zone_dht_next,
                                                    NULL);
     return;
   }
-  expire = GNUNET_NAMESTORE_record_get_expiration_time (rd_count,
-                                                       rd);
+  expire = GNUNET_NAMESTORE_record_get_expiration_time (rd_public_count,
+                                                       rd_public);
   block = GNUNET_NAMESTORE_block_create (key,
                                         expire,
                                         name,
-                                        rd,
-                                        rd_count);
+                                        rd_public,
+                                        rd_public_count);
   block_size = ntohl (block->purpose.size) 
     + sizeof (struct GNUNET_CRYPTO_EccSignature) 
     + sizeof (struct GNUNET_CRYPTO_EccPublicKey);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]