aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/namestore/gnunet-service-namestore.c41
-rw-r--r--src/namestore/namestore.h7
-rw-r--r--src/namestore/namestore_api.c3
-rw-r--r--src/namestore/test_namestore_api_create.c6
-rw-r--r--src/namestore/test_namestore_api_lookup.c7
-rw-r--r--src/namestore/test_namestore_record_serialization.c20
6 files changed, 48 insertions, 36 deletions
diff --git a/src/namestore/gnunet-service-namestore.c b/src/namestore/gnunet-service-namestore.c
index 254c27fef..67c83bc42 100644
--- a/src/namestore/gnunet-service-namestore.c
+++ b/src/namestore/gnunet-service-namestore.c
@@ -212,7 +212,6 @@ handle_lookup_name_it (void *cls,
212 struct GNUNET_NAMESTORE_RecordData *rd_selected = NULL; 212 struct GNUNET_NAMESTORE_RecordData *rd_selected = NULL;
213 char *rd_tmp; 213 char *rd_tmp;
214 char *name_tmp; 214 char *name_tmp;
215 char *rd_ser;
216 size_t rd_ser_len; 215 size_t rd_ser_len;
217 struct GNUNET_CRYPTO_RsaSignature *signature_tmp; 216 struct GNUNET_CRYPTO_RsaSignature *signature_tmp;
218 217
@@ -254,18 +253,22 @@ handle_lookup_name_it (void *cls,
254 copied_elements = rd_count; 253 copied_elements = rd_count;
255 rd_selected = (struct GNUNET_NAMESTORE_RecordData *) rd; 254 rd_selected = (struct GNUNET_NAMESTORE_RecordData *) rd;
256 } 255 }
257 rd_ser_len = GNUNET_NAMESTORE_records_serialize(&rd_ser, copied_elements, rd_selected);
258 } 256 }
259 else 257 else
260 { 258 {
261 /* No results */ 259 /* No results */
262 copied_elements = 0; 260 copied_elements = 0;
263 rd_selected = NULL; 261 rd_selected = NULL;
264 rd_ser = NULL;
265 rd_ser_len = 0;
266 expire = GNUNET_TIME_UNIT_ZERO_ABS; 262 expire = GNUNET_TIME_UNIT_ZERO_ABS;
267 } 263 }
268 264
265
266
267 rd_ser_len = GNUNET_NAMESTORE_records_get_size(copied_elements, rd_selected);
268 char rd_ser[rd_ser_len];
269 GNUNET_NAMESTORE_records_serialize(copied_elements, rd_selected, rd_ser_len, rd_ser);
270
271
269 if ((copied_elements == rd_count) && (signature != NULL)) 272 if ((copied_elements == rd_count) && (signature != NULL))
270 contains_signature = GNUNET_YES; 273 contains_signature = GNUNET_YES;
271 274
@@ -283,6 +286,7 @@ handle_lookup_name_it (void *cls,
283 lnr_msg->gns_header.header.type = ntohs (GNUNET_MESSAGE_TYPE_NAMESTORE_LOOKUP_NAME_RESPONSE); 286 lnr_msg->gns_header.header.type = ntohs (GNUNET_MESSAGE_TYPE_NAMESTORE_LOOKUP_NAME_RESPONSE);
284 lnr_msg->gns_header.header.size = ntohs (r_size); 287 lnr_msg->gns_header.header.size = ntohs (r_size);
285 lnr_msg->gns_header.r_id = htonl (lnc->request_id); 288 lnr_msg->gns_header.r_id = htonl (lnc->request_id);
289 lnr_msg->rd_count = htons (rd_count);
286 lnr_msg->rd_len = htons (rd_ser_len); 290 lnr_msg->rd_len = htons (rd_ser_len);
287 lnr_msg->name_len = htons (name_len); 291 lnr_msg->name_len = htons (name_len);
288 lnr_msg->expire = GNUNET_TIME_absolute_hton(expire); 292 lnr_msg->expire = GNUNET_TIME_absolute_hton(expire);
@@ -303,7 +307,6 @@ handle_lookup_name_it (void *cls,
303 } 307 }
304 memcpy (name_tmp, name, name_len); 308 memcpy (name_tmp, name, name_len);
305 memcpy (rd_tmp, rd_ser, rd_ser_len); 309 memcpy (rd_tmp, rd_ser, rd_ser_len);
306 GNUNET_free_non_null (rd_ser);
307 310
308 if (GNUNET_YES == contains_signature) 311 if (GNUNET_YES == contains_signature)
309 memcpy (signature_tmp, signature, sizeof (struct GNUNET_CRYPTO_RsaSignature)); 312 memcpy (signature_tmp, signature, sizeof (struct GNUNET_CRYPTO_RsaSignature));
@@ -379,7 +382,6 @@ static void handle_record_put (void *cls,
379 struct GNUNET_NAMESTORE_Client *nc; 382 struct GNUNET_NAMESTORE_Client *nc;
380 struct GNUNET_TIME_Absolute expire; 383 struct GNUNET_TIME_Absolute expire;
381 struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded *zone_key; 384 struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded *zone_key;
382 struct GNUNET_NAMESTORE_RecordData *rd;
383 struct GNUNET_CRYPTO_RsaSignature *signature; 385 struct GNUNET_CRYPTO_RsaSignature *signature;
384 struct RecordPutResponseMessage rpr_msg; 386 struct RecordPutResponseMessage rpr_msg;
385 size_t name_len; 387 size_t name_len;
@@ -411,10 +413,11 @@ static void handle_record_put (void *cls,
411 struct RecordPutMessage * rp_msg = (struct RecordPutMessage *) message; 413 struct RecordPutMessage * rp_msg = (struct RecordPutMessage *) message;
412 414
413 rid = ntohl (rp_msg->gns_header.r_id); 415 rid = ntohl (rp_msg->gns_header.r_id);
416 msg_size = ntohs (rp_msg->gns_header.header.size);
414 key_len = sizeof (struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded); 417 key_len = sizeof (struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded);
415 name_len = ntohs (rp_msg->name_len); 418 name_len = ntohs (rp_msg->name_len);
419 rd_count = ntohs (rp_msg->rd_count);
416 rd_ser_len = ntohs(rp_msg->rd_len); 420 rd_ser_len = ntohs(rp_msg->rd_len);
417 msg_size = ntohs (message->size);
418 msg_size_exp = sizeof (struct RecordPutMessage) + key_len + name_len + rd_ser_len; 421 msg_size_exp = sizeof (struct RecordPutMessage) + key_len + name_len + rd_ser_len;
419 422
420 if (msg_size != msg_size_exp) 423 if (msg_size != msg_size_exp)
@@ -445,8 +448,10 @@ static void handle_record_put (void *cls,
445 448
446 expire = GNUNET_TIME_absolute_ntoh(rp_msg->expire); 449 expire = GNUNET_TIME_absolute_ntoh(rp_msg->expire);
447 signature = (struct GNUNET_CRYPTO_RsaSignature *) &rp_msg->signature; 450 signature = (struct GNUNET_CRYPTO_RsaSignature *) &rp_msg->signature;
451
448 rd_ser = &name[name_len]; 452 rd_ser = &name[name_len];
449 rd_count = GNUNET_NAMESTORE_records_deserialize(&rd, rd_ser, rd_ser_len); 453 struct GNUNET_NAMESTORE_RecordData rd[rd_count];
454 GNUNET_NAMESTORE_records_deserialize(rd_ser_len, rd_ser, rd_count, rd);
450 455
451 GNUNET_HashCode zone_hash; 456 GNUNET_HashCode zone_hash;
452 GNUNET_CRYPTO_hash (zone_key, key_len, &zone_hash); 457 GNUNET_CRYPTO_hash (zone_key, key_len, &zone_hash);
@@ -461,8 +466,6 @@ static void handle_record_put (void *cls,
461 rd_count, rd, 466 rd_count, rd,
462 signature); 467 signature);
463 468
464 GNUNET_NAMESTORE_records_free (rd_count, rd);
465
466 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Putting record for name `%s': %s\n", 469 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Putting record for name `%s': %s\n",
467 name, (res == GNUNET_OK) ? "OK" : "FAIL"); 470 name, (res == GNUNET_OK) ? "OK" : "FAIL");
468 471
@@ -496,9 +499,11 @@ GNUNET_NAMESTORE_create_signature (const struct GNUNET_CRYPTO_RsaPrivateKey *key
496 struct GNUNET_CRYPTO_RsaSignature *sig = GNUNET_malloc(sizeof (struct GNUNET_CRYPTO_RsaSignature)); 499 struct GNUNET_CRYPTO_RsaSignature *sig = GNUNET_malloc(sizeof (struct GNUNET_CRYPTO_RsaSignature));
497 struct GNUNET_CRYPTO_RsaSignaturePurpose *sig_purpose; 500 struct GNUNET_CRYPTO_RsaSignaturePurpose *sig_purpose;
498 size_t rd_ser_len; 501 size_t rd_ser_len;
499 char *rd_ser;
500 502
501 rd_ser_len = GNUNET_NAMESTORE_records_serialize(&rd_ser, rd_count, rd); 503 rd_ser_len = GNUNET_NAMESTORE_records_get_size(rd_count, rd);
504 char rd_ser[rd_ser_len];
505 GNUNET_NAMESTORE_records_serialize(rd_count, rd, rd_ser_len, rd_ser);
506
502 sig_purpose = GNUNET_malloc(sizeof (struct GNUNET_CRYPTO_RsaSignaturePurpose) + rd_ser_len); 507 sig_purpose = GNUNET_malloc(sizeof (struct GNUNET_CRYPTO_RsaSignaturePurpose) + rd_ser_len);
503 508
504 sig_purpose->size = htonl (sizeof (struct GNUNET_CRYPTO_RsaSignaturePurpose)+ rd_ser_len); 509 sig_purpose->size = htonl (sizeof (struct GNUNET_CRYPTO_RsaSignaturePurpose)+ rd_ser_len);
@@ -566,7 +571,6 @@ static void handle_record_create (void *cls,
566{ 571{
567 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Received `%s' message\n", "NAMESTORE_RECORD_CREATE"); 572 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Received `%s' message\n", "NAMESTORE_RECORD_CREATE");
568 struct GNUNET_NAMESTORE_Client *nc; 573 struct GNUNET_NAMESTORE_Client *nc;
569 struct GNUNET_NAMESTORE_RecordData *rd;
570 struct CreateRecordContext crc; 574 struct CreateRecordContext crc;
571 struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded pub; 575 struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded pub;
572 GNUNET_HashCode pubkey_hash; 576 GNUNET_HashCode pubkey_hash;
@@ -603,6 +607,7 @@ static void handle_record_create (void *cls,
603 rid = ntohl (rp_msg->gns_header.r_id); 607 rid = ntohl (rp_msg->gns_header.r_id);
604 name_len = ntohs (rp_msg->name_len); 608 name_len = ntohs (rp_msg->name_len);
605 msg_size = ntohs (message->size); 609 msg_size = ntohs (message->size);
610 rd_count = ntohs (rp_msg->rd_count);
606 rd_ser_len = ntohs (rp_msg->rd_len); 611 rd_ser_len = ntohs (rp_msg->rd_len);
607 key_len = ntohs (rp_msg->pkey_len); 612 key_len = ntohs (rp_msg->pkey_len);
608 msg_size_exp = sizeof (struct RecordCreateMessage) + key_len + name_len + rd_ser_len; 613 msg_size_exp = sizeof (struct RecordCreateMessage) + key_len + name_len + rd_ser_len;
@@ -633,7 +638,8 @@ static void handle_record_create (void *cls,
633 return; 638 return;
634 } 639 }
635 640
636 rd_count = GNUNET_NAMESTORE_records_deserialize(&rd, rd_ser, rd_ser_len); 641 struct GNUNET_NAMESTORE_RecordData rd[rd_count];
642 GNUNET_NAMESTORE_records_deserialize(rd_ser_len, rd_ser, rd_count, rd);
637 GNUNET_assert (rd_count == 1); 643 GNUNET_assert (rd_count == 1);
638 644
639 /* Extracting and converting private key */ 645 /* Extracting and converting private key */
@@ -650,9 +656,6 @@ static void handle_record_create (void *cls,
650 /* Get existing records for name */ 656 /* Get existing records for name */
651 res = GSN_database->iterate_records(GSN_database->cls, &pubkey_hash, name_tmp, 0, &handle_create_record_it, &crc); 657 res = GSN_database->iterate_records(GSN_database->cls, &pubkey_hash, name_tmp, 0, &handle_create_record_it, &crc);
652 658
653 GNUNET_CRYPTO_rsa_key_free(pkey);
654 GNUNET_NAMESTORE_records_free(rd_count, rd);
655
656 GNUNET_SERVER_receive_done (client, GNUNET_OK); 659 GNUNET_SERVER_receive_done (client, GNUNET_OK);
657} 660}
658 661
@@ -788,7 +791,9 @@ void zone_iteration_proc (void *cls,
788 791
789 if ((rd_count > 0) && (rd != NULL)) 792 if ((rd_count > 0) && (rd != NULL))
790 { 793 {
791 len = GNUNET_NAMESTORE_records_serialize (&zipr->rd_ser, rd_count, rd); 794 len = GNUNET_NAMESTORE_records_get_size(rd_count, rd);
795 zipr->rd_ser = GNUNET_malloc (len);
796 GNUNET_NAMESTORE_records_serialize(rd_count, rd, len, zipr->rd_ser);
792 zipr->rd_ser_len = len; 797 zipr->rd_ser_len = len;
793 } 798 }
794} 799}
diff --git a/src/namestore/namestore.h b/src/namestore/namestore.h
index ab0da6126..c8353e83b 100644
--- a/src/namestore/namestore.h
+++ b/src/namestore/namestore.h
@@ -141,6 +141,8 @@ struct LookupNameResponseMessage
141 141
142 uint16_t rd_len; 142 uint16_t rd_len;
143 143
144 uint16_t rd_count;
145
144 int32_t contains_sig; 146 int32_t contains_sig;
145 147
146 /* Requested record type */ 148 /* Requested record type */
@@ -167,6 +169,8 @@ struct RecordPutMessage
167 /* Length of serialized rd data */ 169 /* Length of serialized rd data */
168 uint16_t rd_len; 170 uint16_t rd_len;
169 171
172 uint16_t rd_count;
173
170 /* Length of pubkey */ 174 /* Length of pubkey */
171 uint16_t key_len; 175 uint16_t key_len;
172 176
@@ -220,6 +224,9 @@ struct RecordCreateMessage
220 /* Record data length */ 224 /* Record data length */
221 uint16_t rd_len; 225 uint16_t rd_len;
222 226
227 /* Record count */
228 uint16_t rd_count;
229
223 /* private key length */ 230 /* private key length */
224 uint16_t pkey_len; 231 uint16_t pkey_len;
225}; 232};
diff --git a/src/namestore/namestore_api.c b/src/namestore/namestore_api.c
index 5dea13c5e..d3d5e60ef 100644
--- a/src/namestore/namestore_api.c
+++ b/src/namestore/namestore_api.c
@@ -815,7 +815,7 @@ GNUNET_NAMESTORE_record_put (struct GNUNET_NAMESTORE_Handle *h,
815 memcpy (name_tmp, name, name_len); 815 memcpy (name_tmp, name, name_len);
816 msg->expire = GNUNET_TIME_absolute_hton (expire); 816 msg->expire = GNUNET_TIME_absolute_hton (expire);
817 msg->rd_len = htons (rd_ser_len); 817 msg->rd_len = htons (rd_ser_len);
818 818 msg->rd_count = htons (rd_count);
819 819
820 memcpy (rd_tmp, rd_ser, rd_ser_len); 820 memcpy (rd_tmp, rd_ser, rd_ser_len);
821 GNUNET_free (rd_ser); 821 GNUNET_free (rd_ser);
@@ -928,6 +928,7 @@ GNUNET_NAMESTORE_record_create (struct GNUNET_NAMESTORE_Handle *h,
928 msg->gns_header.header.size = htons (msg_size); 928 msg->gns_header.header.size = htons (msg_size);
929 msg->gns_header.r_id = htonl (rid); 929 msg->gns_header.r_id = htonl (rid);
930 msg->name_len = htons (name_len); 930 msg->name_len = htons (name_len);
931 msg->rd_count = htons (1);
931 msg->rd_len = htons (rd_ser_len); 932 msg->rd_len = htons (rd_ser_len);
932 msg->pkey_len = htons (key_len); 933 msg->pkey_len = htons (key_len);
933 memcpy (pkey_tmp, pkey_enc, key_len); 934 memcpy (pkey_tmp, pkey_enc, key_len);
diff --git a/src/namestore/test_namestore_api_create.c b/src/namestore/test_namestore_api_create.c
index 5caf877c2..e4f9cf124 100644
--- a/src/namestore/test_namestore_api_create.c
+++ b/src/namestore/test_namestore_api_create.c
@@ -286,7 +286,6 @@ run (void *cls, char *const *args, const char *cfgfile,
286 const struct GNUNET_CONFIGURATION_Handle *cfg) 286 const struct GNUNET_CONFIGURATION_Handle *cfg)
287{ 287{
288 endbadly_task = GNUNET_SCHEDULER_add_delayed(TIMEOUT,endbadly, NULL); 288 endbadly_task = GNUNET_SCHEDULER_add_delayed(TIMEOUT,endbadly, NULL);
289 char * rd_ser;
290 size_t rd_ser_len; 289 size_t rd_ser_len;
291 290
292 /* load privat key */ 291 /* load privat key */
@@ -298,7 +297,10 @@ run (void *cls, char *const *args, const char *cfgfile,
298 /* create record */ 297 /* create record */
299 s_name = "dummy.dummy.gnunet"; 298 s_name = "dummy.dummy.gnunet";
300 s_rd = create_record (RECORDS); 299 s_rd = create_record (RECORDS);
301 rd_ser_len = GNUNET_NAMESTORE_records_serialize(&rd_ser, RECORDS, s_rd); 300
301 rd_ser_len = GNUNET_NAMESTORE_records_get_size(RECORDS, s_rd);
302 char rd_ser[rd_ser_len];
303 GNUNET_NAMESTORE_records_serialize(RECORDS, s_rd, rd_ser_len, rd_ser);
302 304
303 /* sign */ 305 /* sign */
304 struct GNUNET_CRYPTO_RsaSignaturePurpose *sig_purpose = GNUNET_malloc(sizeof (struct GNUNET_CRYPTO_RsaSignaturePurpose) + rd_ser_len); 306 struct GNUNET_CRYPTO_RsaSignaturePurpose *sig_purpose = GNUNET_malloc(sizeof (struct GNUNET_CRYPTO_RsaSignaturePurpose) + rd_ser_len);
diff --git a/src/namestore/test_namestore_api_lookup.c b/src/namestore/test_namestore_api_lookup.c
index d20a1cdaf..1d91c32c6 100644
--- a/src/namestore/test_namestore_api_lookup.c
+++ b/src/namestore/test_namestore_api_lookup.c
@@ -232,7 +232,7 @@ run (void *cls, char *const *args, const char *cfgfile,
232 const struct GNUNET_CONFIGURATION_Handle *cfg) 232 const struct GNUNET_CONFIGURATION_Handle *cfg)
233{ 233{
234 endbadly_task = GNUNET_SCHEDULER_add_delayed(TIMEOUT,endbadly, NULL); 234 endbadly_task = GNUNET_SCHEDULER_add_delayed(TIMEOUT,endbadly, NULL);
235 char * rd_ser; 235
236 size_t rd_ser_len; 236 size_t rd_ser_len;
237 237
238 /* load privat key */ 238 /* load privat key */
@@ -244,7 +244,10 @@ run (void *cls, char *const *args, const char *cfgfile,
244 /* create record */ 244 /* create record */
245 s_name = "dummy.dummy.gnunet"; 245 s_name = "dummy.dummy.gnunet";
246 s_rd = create_record (RECORDS); 246 s_rd = create_record (RECORDS);
247 rd_ser_len = GNUNET_NAMESTORE_records_serialize(&rd_ser, RECORDS, s_rd); 247
248 rd_ser_len = GNUNET_NAMESTORE_records_get_size(RECORDS, s_rd);
249 char rd_ser[rd_ser_len];
250 GNUNET_NAMESTORE_records_serialize(RECORDS, s_rd, rd_ser_len, rd_ser);
248 251
249 /* sign */ 252 /* sign */
250 struct GNUNET_CRYPTO_RsaSignaturePurpose *sig_purpose = GNUNET_malloc(sizeof (struct GNUNET_CRYPTO_RsaSignaturePurpose) + rd_ser_len); 253 struct GNUNET_CRYPTO_RsaSignaturePurpose *sig_purpose = GNUNET_malloc(sizeof (struct GNUNET_CRYPTO_RsaSignaturePurpose) + rd_ser_len);
diff --git a/src/namestore/test_namestore_record_serialization.c b/src/namestore/test_namestore_record_serialization.c
index cd60a5dda..b389e7faf 100644
--- a/src/namestore/test_namestore_record_serialization.c
+++ b/src/namestore/test_namestore_record_serialization.c
@@ -36,15 +36,12 @@ static void
36run (void *cls, char *const *args, const char *cfgfile, 36run (void *cls, char *const *args, const char *cfgfile,
37 const struct GNUNET_CONFIGURATION_Handle *cfg) 37 const struct GNUNET_CONFIGURATION_Handle *cfg)
38{ 38{
39 char * rd_ser = NULL;
40 size_t len; 39 size_t len;
41 int c; 40 int c;
42 int dst_elem = 0;
43 41
44 int rd_count = 3; 42 int rd_count = 3;
45 size_t data_len; 43 size_t data_len;
46 struct GNUNET_NAMESTORE_RecordData src[rd_count]; 44 struct GNUNET_NAMESTORE_RecordData src[rd_count];
47 struct GNUNET_NAMESTORE_RecordData *dst = NULL;
48 45
49 memset(src, '\0', rd_count * sizeof (struct GNUNET_NAMESTORE_RecordData)); 46 memset(src, '\0', rd_count * sizeof (struct GNUNET_NAMESTORE_RecordData));
50 47
@@ -61,18 +58,20 @@ run (void *cls, char *const *args, const char *cfgfile,
61 } 58 }
62 res = 0; 59 res = 0;
63 60
64 len = GNUNET_NAMESTORE_records_serialize (&rd_ser, rd_count, src); 61 len = GNUNET_NAMESTORE_records_get_size(rd_count, src);
62 char rd_ser[len];
63 GNUNET_assert (len == GNUNET_NAMESTORE_records_serialize(rd_count, src, len, rd_ser));
64
65 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Serialized data len: %u\n",len); 65 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Serialized data len: %u\n",len);
66 66
67 GNUNET_assert (rd_ser != NULL); 67 GNUNET_assert (rd_ser != NULL);
68 68
69 dst_elem = GNUNET_NAMESTORE_records_deserialize(&dst, rd_ser, len); 69 struct GNUNET_NAMESTORE_RecordData dst[rd_count];
70 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Deserialized elements: %u\n",dst_elem); 70 GNUNET_assert (GNUNET_OK == GNUNET_NAMESTORE_records_deserialize (len, rd_ser, rd_count, dst));
71 71
72 GNUNET_assert (dst_elem == rd_count);
73 GNUNET_assert (dst != NULL); 72 GNUNET_assert (dst != NULL);
74 73
75 for (c = 0; c < dst_elem; c++) 74 for (c = 0; c < rd_count; c++)
76 { 75 {
77 if (src[c].data_size != dst[c].data_size) 76 if (src[c].data_size != dst[c].data_size)
78 { 77 {
@@ -116,11 +115,6 @@ run (void *cls, char *const *args, const char *cfgfile,
116 115
117 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Element [%i]: EQUAL\n", c); 116 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Element [%i]: EQUAL\n", c);
118 } 117 }
119
120 for (c = 0; c < rd_count; c++)
121 GNUNET_free ((void *) src[c].data);
122 GNUNET_NAMESTORE_records_free (dst_elem, dst);
123 GNUNET_free (rd_ser);
124} 118}
125 119
126static int 120static int