aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2012-03-06 12:49:02 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2012-03-06 12:49:02 +0000
commit46bab5b9f9afefaac097767ea356defea5efbbaa (patch)
tree04c8c00d8b5f2f91efe6ea3b9a6303dea28b4cbd /src
parent10b2ef580e79924e9117e1654dd9d58b23d618e2 (diff)
downloadgnunet-46bab5b9f9afefaac097767ea356defea5efbbaa.tar.gz
gnunet-46bab5b9f9afefaac097767ea356defea5efbbaa.zip
- fixes for put and lookup
Diffstat (limited to 'src')
-rw-r--r--src/namestore/gnunet-service-namestore.c14
-rw-r--r--src/namestore/namestore.h5
-rw-r--r--src/namestore/namestore_api.c20
3 files changed, 17 insertions, 22 deletions
diff --git a/src/namestore/gnunet-service-namestore.c b/src/namestore/gnunet-service-namestore.c
index 7408f7ad7..8153cf20b 100644
--- a/src/namestore/gnunet-service-namestore.c
+++ b/src/namestore/gnunet-service-namestore.c
@@ -231,8 +231,6 @@ handle_lookup_name_it (void *cls,
231 /* send response */ 231 /* send response */
232 struct LookupNameContext *lnc = cls; 232 struct LookupNameContext *lnc = cls;
233 struct LookupNameResponseMessage *lnr_msg; 233 struct LookupNameResponseMessage *lnr_msg;
234
235 struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded *zone_key_tmp;
236 struct GNUNET_NAMESTORE_RecordData *rd_selected = NULL; 234 struct GNUNET_NAMESTORE_RecordData *rd_selected = NULL;
237 char *rd_tmp; 235 char *rd_tmp;
238 char *name_tmp; 236 char *name_tmp;
@@ -313,17 +311,16 @@ handle_lookup_name_it (void *cls,
313 lnr_msg->rd_len = htons (rd_ser_len); 311 lnr_msg->rd_len = htons (rd_ser_len);
314 lnr_msg->name_len = htons (name_len); 312 lnr_msg->name_len = htons (name_len);
315 lnr_msg->expire = GNUNET_TIME_absolute_hton(expire); 313 lnr_msg->expire = GNUNET_TIME_absolute_hton(expire);
314 lnr_msg->public_key = (*zone_key);
316 lnr_msg->contains_sig = htons (contains_signature); 315 lnr_msg->contains_sig = htons (contains_signature);
317 if (GNUNET_YES == contains_signature) 316 if (GNUNET_YES == contains_signature)
318 lnr_msg->signature = *signature; 317 lnr_msg->signature = *signature;
319 else 318 else
320 memset (&lnr_msg->signature, '\0', sizeof (lnr_msg->signature)); 319 memset (&lnr_msg->signature, '\0', sizeof (lnr_msg->signature));
321 320
322 zone_key_tmp = (struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded *) &lnr_msg[1]; 321 name_tmp = (char *) &lnr_msg[1];
323 name_tmp = (char *) &zone_key_tmp[1];
324 rd_tmp = &name_tmp[name_len]; 322 rd_tmp = &name_tmp[name_len];
325 323
326 memcpy (zone_key_tmp, zone_key, sizeof (struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded));
327 memcpy (name_tmp, name, name_len); 324 memcpy (name_tmp, name, name_len);
328 memcpy (rd_tmp, rd_ser, rd_ser_len); 325 memcpy (rd_tmp, rd_ser, rd_ser_len);
329 326
@@ -488,7 +485,6 @@ static void handle_record_put (void *cls,
488 goto send; 485 goto send;
489 } 486 }
490 487
491
492 GNUNET_HashCode zone_hash; 488 GNUNET_HashCode zone_hash;
493 GNUNET_CRYPTO_hash (&rp_msg->public_key, sizeof (rp_msg->public_key), &zone_hash); 489 GNUNET_CRYPTO_hash (&rp_msg->public_key, sizeof (rp_msg->public_key), &zone_hash);
494 490
@@ -511,11 +507,7 @@ send:
511 rpr_msg.gns_header.header.type = htons (GNUNET_MESSAGE_TYPE_NAMESTORE_RECORD_PUT_RESPONSE); 507 rpr_msg.gns_header.header.type = htons (GNUNET_MESSAGE_TYPE_NAMESTORE_RECORD_PUT_RESPONSE);
512 rpr_msg.gns_header.header.size = htons (sizeof (struct RecordPutResponseMessage)); 508 rpr_msg.gns_header.header.size = htons (sizeof (struct RecordPutResponseMessage));
513 rpr_msg.gns_header.r_id = rp_msg->gns_header.r_id; 509 rpr_msg.gns_header.r_id = rp_msg->gns_header.r_id;
514 510 rpr_msg.op_result = htons (res);
515 if (GNUNET_OK == res)
516 rpr_msg.op_result = htons (GNUNET_OK);
517 else
518 rpr_msg.op_result = htons (GNUNET_NO);
519 GNUNET_SERVER_notification_context_unicast (snc, nc->client, (const struct GNUNET_MessageHeader *) &rpr_msg, GNUNET_NO); 511 GNUNET_SERVER_notification_context_unicast (snc, nc->client, (const struct GNUNET_MessageHeader *) &rpr_msg, GNUNET_NO);
520 512
521 GNUNET_SERVER_receive_done (client, GNUNET_OK); 513 GNUNET_SERVER_receive_done (client, GNUNET_OK);
diff --git a/src/namestore/namestore.h b/src/namestore/namestore.h
index 5b4c02385..ac59d9a11 100644
--- a/src/namestore/namestore.h
+++ b/src/namestore/namestore.h
@@ -277,7 +277,9 @@ struct RecordPutResponseMessage
277 struct GNUNET_NAMESTORE_Header gns_header; 277 struct GNUNET_NAMESTORE_Header gns_header;
278 278
279 /** 279 /**
280 * name length: GNUNET_NO (0) on error, GNUNET_OK (1) on success 280 * result:
281 * GNUNET_SYSERR on failure
282 * GNUNET_OK on success
281 */ 283 */
282 int32_t op_result; 284 int32_t op_result;
283}; 285};
@@ -286,7 +288,6 @@ struct RecordPutResponseMessage
286/** 288/**
287 * Create a record and put it to the namestore 289 * Create a record and put it to the namestore
288 * Memory layout: 290 * Memory layout:
289 * [struct RecordCreateMessage][char *name][rc_count * struct GNUNET_NAMESTORE_RecordData]
290 */ 291 */
291struct RecordCreateMessage 292struct RecordCreateMessage
292{ 293{
diff --git a/src/namestore/namestore_api.c b/src/namestore/namestore_api.c
index f885c2b7c..195c8a9bd 100644
--- a/src/namestore/namestore_api.c
+++ b/src/namestore/namestore_api.c
@@ -323,23 +323,20 @@ handle_record_put_response (struct GNUNET_NAMESTORE_QueueEntry *qe,
323 "RECORD_PUT_RESPONSE"); 323 "RECORD_PUT_RESPONSE");
324 324
325 struct GNUNET_NAMESTORE_Handle *h = qe->nsh; 325 struct GNUNET_NAMESTORE_Handle *h = qe->nsh;
326 int res = GNUNET_OK;
327 326
328 if (ntohs (msg->op_result) == GNUNET_OK) 327 if (ntohs (msg->op_result) == GNUNET_OK)
329 { 328 {
330 res = GNUNET_OK;
331 if (qe->cont != NULL) 329 if (qe->cont != NULL)
332 { 330 {
333 qe->cont (qe->cont_cls, res, _("Namestore added record successfully")); 331 qe->cont (qe->cont_cls, GNUNET_OK, _("Namestore added record successfully"));
334 } 332 }
335 333
336 } 334 }
337 else if (ntohs (msg->op_result) == GNUNET_NO) 335 else if (ntohs (msg->op_result) == GNUNET_SYSERR)
338 { 336 {
339 res = GNUNET_SYSERR;
340 if (qe->cont != NULL) 337 if (qe->cont != NULL)
341 { 338 {
342 qe->cont (qe->cont_cls, res, _("Namestore failed to add record")); 339 qe->cont (qe->cont_cls, GNUNET_SYSERR, _("Namestore failed to add record"));
343 } 340 }
344 } 341 }
345 else 342 else
@@ -952,7 +949,6 @@ GNUNET_NAMESTORE_record_put (struct GNUNET_NAMESTORE_Handle *h,
952 size_t msg_size = 0; 949 size_t msg_size = 0;
953 size_t name_len = 0; 950 size_t name_len = 0;
954 size_t rd_ser_len = 0; 951 size_t rd_ser_len = 0;
955 size_t pubkey_len = 0;
956 uint32_t rid = 0; 952 uint32_t rid = 0;
957 953
958 GNUNET_assert (NULL != h); 954 GNUNET_assert (NULL != h);
@@ -981,9 +977,8 @@ GNUNET_NAMESTORE_record_put (struct GNUNET_NAMESTORE_Handle *h,
981 char rd_ser[rd_ser_len]; 977 char rd_ser[rd_ser_len];
982 GNUNET_NAMESTORE_records_serialize(rd_count, rd, rd_ser_len, rd_ser); 978 GNUNET_NAMESTORE_records_serialize(rd_count, rd, rd_ser_len, rd_ser);
983 979
984 pubkey_len = sizeof (struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded);
985 struct RecordPutMessage * msg; 980 struct RecordPutMessage * msg;
986 msg_size = sizeof (struct RecordPutMessage) + pubkey_len + name_len + rd_ser_len; 981 msg_size = sizeof (struct RecordPutMessage) + name_len + rd_ser_len;
987 982
988 /* create msg here */ 983 /* create msg here */
989 pe = GNUNET_malloc(sizeof (struct PendingMessage) + msg_size); 984 pe = GNUNET_malloc(sizeof (struct PendingMessage) + msg_size);
@@ -1042,13 +1037,20 @@ GNUNET_NAMESTORE_verify_signature (const struct GNUNET_CRYPTO_RsaPublicKeyBinary
1042 1037
1043 GNUNET_assert (public_key != NULL); 1038 GNUNET_assert (public_key != NULL);
1044 GNUNET_assert (name != NULL); 1039 GNUNET_assert (name != NULL);
1040 GNUNET_assert (rd != NULL);
1045 GNUNET_assert (signature != NULL); 1041 GNUNET_assert (signature != NULL);
1046 1042
1043
1047 rd_ser_len = GNUNET_NAMESTORE_records_get_size(rd_count, rd); 1044 rd_ser_len = GNUNET_NAMESTORE_records_get_size(rd_count, rd);
1048 char rd_ser[rd_ser_len]; 1045 char rd_ser[rd_ser_len];
1049 GNUNET_NAMESTORE_records_serialize(rd_count, rd, rd_ser_len, rd_ser); 1046 GNUNET_NAMESTORE_records_serialize(rd_count, rd, rd_ser_len, rd_ser);
1050 1047
1051 name_len = strlen (name) + 1; 1048 name_len = strlen (name) + 1;
1049 if (name_len > 256)
1050 {
1051 GNUNET_break (0);
1052 return GNUNET_SYSERR;
1053 }
1052 1054
1053 sig_purpose = GNUNET_malloc(sizeof (struct GNUNET_CRYPTO_RsaSignaturePurpose) + rd_ser_len + name_len); 1055 sig_purpose = GNUNET_malloc(sizeof (struct GNUNET_CRYPTO_RsaSignaturePurpose) + rd_ser_len + name_len);
1054 sig_purpose->size = htonl (sizeof (struct GNUNET_CRYPTO_RsaSignaturePurpose)+ rd_ser_len + name_len); 1056 sig_purpose->size = htonl (sizeof (struct GNUNET_CRYPTO_RsaSignaturePurpose)+ rd_ser_len + name_len);