gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r20167 - gnunet/src/namestore


From: gnunet
Subject: [GNUnet-SVN] r20167 - gnunet/src/namestore
Date: Thu, 1 Mar 2012 13:30:18 +0100

Author: wachs
Date: 2012-03-01 13:30:18 +0100 (Thu, 01 Mar 2012)
New Revision: 20167

Modified:
   gnunet/src/namestore/gnunet-service-namestore.c
   gnunet/src/namestore/namestore.h
   gnunet/src/namestore/namestore_api.c
   gnunet/src/namestore/test_namestore_api_create.c
   gnunet/src/namestore/test_namestore_api_lookup.c
   gnunet/src/namestore/test_namestore_record_serialization.c
Log:
- at least compiling


Modified: gnunet/src/namestore/gnunet-service-namestore.c
===================================================================
--- gnunet/src/namestore/gnunet-service-namestore.c     2012-03-01 12:02:36 UTC 
(rev 20166)
+++ gnunet/src/namestore/gnunet-service-namestore.c     2012-03-01 12:30:18 UTC 
(rev 20167)
@@ -212,7 +212,6 @@
   struct GNUNET_NAMESTORE_RecordData *rd_selected = NULL;
   char *rd_tmp;
   char *name_tmp;
-  char *rd_ser;
   size_t rd_ser_len;
   struct GNUNET_CRYPTO_RsaSignature *signature_tmp;
 
@@ -254,18 +253,22 @@
       copied_elements = rd_count;
       rd_selected = (struct GNUNET_NAMESTORE_RecordData *) rd;
     }
-    rd_ser_len = GNUNET_NAMESTORE_records_serialize(&rd_ser, copied_elements, 
rd_selected);
   }
   else
   {
     /* No results */
     copied_elements = 0;
     rd_selected = NULL;
-    rd_ser = NULL;
-    rd_ser_len = 0;
     expire = GNUNET_TIME_UNIT_ZERO_ABS;
   }
 
+
+
+  rd_ser_len = GNUNET_NAMESTORE_records_get_size(copied_elements, rd_selected);
+  char rd_ser[rd_ser_len];
+  GNUNET_NAMESTORE_records_serialize(copied_elements, rd_selected, rd_ser_len, 
rd_ser);
+
+
   if ((copied_elements == rd_count) && (signature != NULL))
       contains_signature = GNUNET_YES;
 
@@ -283,6 +286,7 @@
   lnr_msg->gns_header.header.type = ntohs 
(GNUNET_MESSAGE_TYPE_NAMESTORE_LOOKUP_NAME_RESPONSE);
   lnr_msg->gns_header.header.size = ntohs (r_size);
   lnr_msg->gns_header.r_id = htonl (lnc->request_id);
+  lnr_msg->rd_count = htons (rd_count);
   lnr_msg->rd_len = htons (rd_ser_len);
   lnr_msg->name_len = htons (name_len);
   lnr_msg->expire = GNUNET_TIME_absolute_hton(expire);
@@ -303,7 +307,6 @@
   }
   memcpy (name_tmp, name, name_len);
   memcpy (rd_tmp, rd_ser, rd_ser_len);
-  GNUNET_free_non_null (rd_ser);
 
   if (GNUNET_YES == contains_signature)
     memcpy (signature_tmp, signature, sizeof (struct 
GNUNET_CRYPTO_RsaSignature));
@@ -379,7 +382,6 @@
   struct GNUNET_NAMESTORE_Client *nc;
   struct GNUNET_TIME_Absolute expire;
   struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded *zone_key;
-  struct GNUNET_NAMESTORE_RecordData *rd;
   struct GNUNET_CRYPTO_RsaSignature *signature;
   struct RecordPutResponseMessage rpr_msg;
   size_t name_len;
@@ -411,10 +413,11 @@
   struct RecordPutMessage * rp_msg = (struct RecordPutMessage *) message;
 
   rid = ntohl (rp_msg->gns_header.r_id);
+  msg_size = ntohs (rp_msg->gns_header.header.size);
   key_len = sizeof (struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded);
   name_len = ntohs (rp_msg->name_len);
+  rd_count = ntohs (rp_msg->rd_count);
   rd_ser_len = ntohs(rp_msg->rd_len);
-  msg_size = ntohs (message->size);
   msg_size_exp = sizeof (struct RecordPutMessage) + key_len + name_len  + 
rd_ser_len;
 
   if (msg_size != msg_size_exp)
@@ -445,8 +448,10 @@
 
   expire = GNUNET_TIME_absolute_ntoh(rp_msg->expire);
   signature = (struct GNUNET_CRYPTO_RsaSignature *) &rp_msg->signature;
+
   rd_ser = &name[name_len];
-  rd_count = GNUNET_NAMESTORE_records_deserialize(&rd, rd_ser, rd_ser_len);
+  struct GNUNET_NAMESTORE_RecordData rd[rd_count];
+  GNUNET_NAMESTORE_records_deserialize(rd_ser_len, rd_ser, rd_count, rd);
 
   GNUNET_HashCode zone_hash;
   GNUNET_CRYPTO_hash (zone_key, key_len, &zone_hash);
@@ -461,8 +466,6 @@
                                 rd_count, rd,
                                 signature);
 
-  GNUNET_NAMESTORE_records_free (rd_count, rd);
-
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Putting record for name `%s': %s\n",
       name, (res == GNUNET_OK) ? "OK" : "FAIL");
 
@@ -496,9 +499,11 @@
   struct GNUNET_CRYPTO_RsaSignature *sig = GNUNET_malloc(sizeof (struct 
GNUNET_CRYPTO_RsaSignature));
   struct GNUNET_CRYPTO_RsaSignaturePurpose *sig_purpose;
   size_t rd_ser_len;
-  char *rd_ser;
 
-  rd_ser_len = GNUNET_NAMESTORE_records_serialize(&rd_ser, rd_count, rd);
+  rd_ser_len = GNUNET_NAMESTORE_records_get_size(rd_count, rd);
+  char rd_ser[rd_ser_len];
+  GNUNET_NAMESTORE_records_serialize(rd_count, rd, rd_ser_len, rd_ser);
+
   sig_purpose = GNUNET_malloc(sizeof (struct 
GNUNET_CRYPTO_RsaSignaturePurpose) + rd_ser_len);
 
   sig_purpose->size = htonl (sizeof (struct 
GNUNET_CRYPTO_RsaSignaturePurpose)+ rd_ser_len);
@@ -566,7 +571,6 @@
 {
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Received `%s' message\n", 
"NAMESTORE_RECORD_CREATE");
   struct GNUNET_NAMESTORE_Client *nc;
-  struct GNUNET_NAMESTORE_RecordData *rd;
   struct CreateRecordContext crc;
   struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded pub;
   GNUNET_HashCode pubkey_hash;
@@ -603,6 +607,7 @@
   rid = ntohl (rp_msg->gns_header.r_id);
   name_len = ntohs (rp_msg->name_len);
   msg_size = ntohs (message->size);
+  rd_count = ntohs (rp_msg->rd_count);
   rd_ser_len = ntohs (rp_msg->rd_len);
   key_len = ntohs (rp_msg->pkey_len);
   msg_size_exp = sizeof (struct RecordCreateMessage) + key_len + name_len + 
rd_ser_len;
@@ -633,7 +638,8 @@
     return;
   }
 
-  rd_count = GNUNET_NAMESTORE_records_deserialize(&rd, rd_ser, rd_ser_len);
+  struct GNUNET_NAMESTORE_RecordData rd[rd_count];
+  GNUNET_NAMESTORE_records_deserialize(rd_ser_len, rd_ser, rd_count, rd);
   GNUNET_assert (rd_count == 1);
 
   /* Extracting and converting private key */
@@ -650,9 +656,6 @@
   /* Get existing records for name */
   res = GSN_database->iterate_records(GSN_database->cls, &pubkey_hash, 
name_tmp, 0, &handle_create_record_it, &crc);
 
-  GNUNET_CRYPTO_rsa_key_free(pkey);
-  GNUNET_NAMESTORE_records_free(rd_count, rd);
-
   GNUNET_SERVER_receive_done (client, GNUNET_OK);
 }
 
@@ -788,7 +791,9 @@
 
   if ((rd_count > 0) && (rd != NULL))
   {
-    len = GNUNET_NAMESTORE_records_serialize (&zipr->rd_ser, rd_count, rd);
+    len = GNUNET_NAMESTORE_records_get_size(rd_count, rd);
+    zipr->rd_ser = GNUNET_malloc (len);
+    GNUNET_NAMESTORE_records_serialize(rd_count, rd, len, zipr->rd_ser);
     zipr->rd_ser_len = len;
   }
 }

Modified: gnunet/src/namestore/namestore.h
===================================================================
--- gnunet/src/namestore/namestore.h    2012-03-01 12:02:36 UTC (rev 20166)
+++ gnunet/src/namestore/namestore.h    2012-03-01 12:30:18 UTC (rev 20167)
@@ -141,6 +141,8 @@
 
   uint16_t rd_len;
 
+  uint16_t rd_count;
+
   int32_t contains_sig;
 
   /* Requested record type */
@@ -167,6 +169,8 @@
   /* Length of serialized rd data */
   uint16_t rd_len;
 
+  uint16_t rd_count;
+
   /* Length of pubkey */
   uint16_t key_len;
 
@@ -220,6 +224,9 @@
   /* Record data length */
   uint16_t rd_len;
 
+  /* Record count */
+  uint16_t rd_count;
+
   /* private key length */
   uint16_t pkey_len;
 };

Modified: gnunet/src/namestore/namestore_api.c
===================================================================
--- gnunet/src/namestore/namestore_api.c        2012-03-01 12:02:36 UTC (rev 
20166)
+++ gnunet/src/namestore/namestore_api.c        2012-03-01 12:30:18 UTC (rev 
20167)
@@ -815,8 +815,8 @@
   memcpy (name_tmp, name, name_len);
   msg->expire = GNUNET_TIME_absolute_hton (expire);
   msg->rd_len = htons (rd_ser_len);
+  msg->rd_count = htons (rd_count);
 
-
   memcpy (rd_tmp, rd_ser, rd_ser_len);
   GNUNET_free (rd_ser);
 
@@ -928,6 +928,7 @@
   msg->gns_header.header.size = htons (msg_size);
   msg->gns_header.r_id = htonl (rid);
   msg->name_len = htons (name_len);
+  msg->rd_count = htons (1);
   msg->rd_len = htons (rd_ser_len);
   msg->pkey_len = htons (key_len);
   memcpy (pkey_tmp, pkey_enc, key_len);

Modified: gnunet/src/namestore/test_namestore_api_create.c
===================================================================
--- gnunet/src/namestore/test_namestore_api_create.c    2012-03-01 12:02:36 UTC 
(rev 20166)
+++ gnunet/src/namestore/test_namestore_api_create.c    2012-03-01 12:30:18 UTC 
(rev 20167)
@@ -286,7 +286,6 @@
      const struct GNUNET_CONFIGURATION_Handle *cfg)
 {
   endbadly_task = GNUNET_SCHEDULER_add_delayed(TIMEOUT,endbadly, NULL);
-  char * rd_ser;
   size_t rd_ser_len;
 
   /* load privat key */
@@ -298,8 +297,11 @@
   /* create record */
   s_name = "dummy.dummy.gnunet";
   s_rd = create_record (RECORDS);
-  rd_ser_len = GNUNET_NAMESTORE_records_serialize(&rd_ser, RECORDS, s_rd);
 
+  rd_ser_len = GNUNET_NAMESTORE_records_get_size(RECORDS, s_rd);
+  char rd_ser[rd_ser_len];
+  GNUNET_NAMESTORE_records_serialize(RECORDS, s_rd, rd_ser_len, rd_ser);
+
   /* sign */
   struct GNUNET_CRYPTO_RsaSignaturePurpose *sig_purpose = GNUNET_malloc(sizeof 
(struct GNUNET_CRYPTO_RsaSignaturePurpose) + rd_ser_len);
   sig_purpose->size = htonl (sizeof (struct 
GNUNET_CRYPTO_RsaSignaturePurpose)+ rd_ser_len);

Modified: gnunet/src/namestore/test_namestore_api_lookup.c
===================================================================
--- gnunet/src/namestore/test_namestore_api_lookup.c    2012-03-01 12:02:36 UTC 
(rev 20166)
+++ gnunet/src/namestore/test_namestore_api_lookup.c    2012-03-01 12:30:18 UTC 
(rev 20167)
@@ -232,7 +232,7 @@
      const struct GNUNET_CONFIGURATION_Handle *cfg)
 {
   endbadly_task = GNUNET_SCHEDULER_add_delayed(TIMEOUT,endbadly, NULL);
-  char * rd_ser;
+
   size_t rd_ser_len;
 
   /* load privat key */
@@ -244,8 +244,11 @@
   /* create record */
   s_name = "dummy.dummy.gnunet";
   s_rd = create_record (RECORDS);
-  rd_ser_len = GNUNET_NAMESTORE_records_serialize(&rd_ser, RECORDS, s_rd);
 
+  rd_ser_len = GNUNET_NAMESTORE_records_get_size(RECORDS, s_rd);
+  char rd_ser[rd_ser_len];
+  GNUNET_NAMESTORE_records_serialize(RECORDS, s_rd, rd_ser_len, rd_ser);
+
   /* sign */
   struct GNUNET_CRYPTO_RsaSignaturePurpose *sig_purpose = GNUNET_malloc(sizeof 
(struct GNUNET_CRYPTO_RsaSignaturePurpose) + rd_ser_len);
   sig_purpose->size = htonl (sizeof (struct 
GNUNET_CRYPTO_RsaSignaturePurpose)+ rd_ser_len);

Modified: gnunet/src/namestore/test_namestore_record_serialization.c
===================================================================
--- gnunet/src/namestore/test_namestore_record_serialization.c  2012-03-01 
12:02:36 UTC (rev 20166)
+++ gnunet/src/namestore/test_namestore_record_serialization.c  2012-03-01 
12:30:18 UTC (rev 20167)
@@ -36,15 +36,12 @@
 run (void *cls, char *const *args, const char *cfgfile,
      const struct GNUNET_CONFIGURATION_Handle *cfg)
 {
-  char * rd_ser = NULL;
   size_t len;
   int c;
-  int dst_elem = 0;
 
   int rd_count = 3;
   size_t data_len;
   struct GNUNET_NAMESTORE_RecordData src[rd_count];
-  struct GNUNET_NAMESTORE_RecordData *dst = NULL;
 
   memset(src, '\0', rd_count * sizeof (struct GNUNET_NAMESTORE_RecordData));
 
@@ -61,18 +58,20 @@
   }
   res = 0;
 
-  len = GNUNET_NAMESTORE_records_serialize (&rd_ser, rd_count, src);
+  len = GNUNET_NAMESTORE_records_get_size(rd_count, src);
+  char rd_ser[len];
+  GNUNET_assert (len == GNUNET_NAMESTORE_records_serialize(rd_count, src, len, 
rd_ser));
+
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Serialized data len: %u\n",len);
 
   GNUNET_assert (rd_ser != NULL);
 
-  dst_elem = GNUNET_NAMESTORE_records_deserialize(&dst, rd_ser, len);
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Deserialized elements: %u\n",dst_elem);
+  struct GNUNET_NAMESTORE_RecordData dst[rd_count];
+  GNUNET_assert (GNUNET_OK == GNUNET_NAMESTORE_records_deserialize (len, 
rd_ser, rd_count, dst));
 
-  GNUNET_assert (dst_elem == rd_count);
   GNUNET_assert (dst != NULL);
 
-  for (c = 0; c < dst_elem; c++)
+  for (c = 0; c < rd_count; c++)
   {
     if (src[c].data_size != dst[c].data_size)
     {
@@ -116,11 +115,6 @@
 
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Element [%i]: EQUAL\n", c);
   }
-
-  for (c = 0; c < rd_count; c++)
-    GNUNET_free ((void *)  src[c].data);
-  GNUNET_NAMESTORE_records_free (dst_elem, dst);
-  GNUNET_free (rd_ser);
 }
 
 static int




reply via email to

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