convert fs publish to MQ
[oweals/gnunet.git] / src / gnsrecord / gnsrecord_crypto.c
index 05a20c33acf1a7561e650efefe1da4320e37e269..fcd37358034ae93b0413b68ed04870da0a2bd946 100644 (file)
@@ -1,6 +1,6 @@
 /*
      This file is part of GNUnet.
-     (C) 2009-2013 Christian Grothoff (and other contributing authors)
+     Copyright (C) 2009-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,9 +106,12 @@ GNUNET_GNSRECORD_block_create (const struct GNUNET_CRYPTO_EcdsaPrivateKey *key,
     rdc[i] = rd[i];
     if (0 != (rd[i].flags & GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION))
     {
+      struct GNUNET_TIME_Relative t;
+
       /* encrypted blocks must never have relative expiration times, convert! */
       rdc[i].flags &= ~GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION;
-      rdc[i].expiration_time += now.abs_value_us;
+      t.rel_value_us = rdc[i].expiration_time;
+      rdc[i].expiration_time = GNUNET_TIME_absolute_add (now, t).abs_value_us;
     }
   }
   /* serialize */
@@ -187,7 +190,6 @@ GNUNET_GNSRECORD_block_decrypt (const struct GNUNET_GNSRECORD_Block *block,
                                GNUNET_GNSRECORD_RecordCallback proc,
                                void *proc_cls)
 {
-  struct GNUNET_TIME_Absolute exp;
   size_t payload_len = ntohl (block->purpose.size) -
     sizeof (struct GNUNET_CRYPTO_EccSignaturePurpose) -
     sizeof (struct GNUNET_TIME_AbsoluteNBO);
@@ -241,8 +243,6 @@ GNUNET_GNSRECORD_block_decrypt (const struct GNUNET_GNSRECORD_Block *block,
       j = 0;
       for (i=0;i<rd_count;i++)
       {
-        if (0 != (rd[i].flags & GNUNET_GNSRECORD_RF_PENDING))
-          continue; /* PENDING should never be used */
         if (0 != (rd[i].flags & GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION))
         {
           /* encrypted blocks must never have relative expiration times, skip! */
@@ -250,7 +250,6 @@ GNUNET_GNSRECORD_block_decrypt (const struct GNUNET_GNSRECORD_Block *block,
           continue;
         }
 
-        exp.abs_value_us = GNUNET_ntohll (rd[i].expiration_time);
         if (0 != (rd[i].flags & GNUNET_GNSRECORD_RF_SHADOW_RECORD))
         {
           int include_record = GNUNET_YES;
@@ -259,12 +258,10 @@ GNUNET_GNSRECORD_block_decrypt (const struct GNUNET_GNSRECORD_Block *block,
           {
             if (k == i)
               continue;
-            if (exp.abs_value_us < now.abs_value_us)
-            {
+            if (rd[i].expiration_time < now.abs_value_us)
               include_record = GNUNET_NO; /* Shadow record is expired */
-            }
             if ((rd[k].record_type == rd[i].record_type)
-                && (GNUNET_ntohll (rd[k].expiration_time) >= now.abs_value_us)
+                && (rd[k].expiration_time >= now.abs_value_us)
                 && (0 == (rd[k].flags & GNUNET_GNSRECORD_RF_SHADOW_RECORD)))
               include_record = GNUNET_NO; /* We have a non-expired, non-shadow record of the same type */
           }
@@ -276,7 +273,7 @@ GNUNET_GNSRECORD_block_decrypt (const struct GNUNET_GNSRECORD_Block *block,
             j++;
           }
         }
-        else if (exp.abs_value_us >= now.abs_value_us)
+        else if (rd[i].expiration_time >= now.abs_value_us)
         {
           /* Include this record */
           if (j != i)