diff options
author | Matthias Wachs <wachs@net.in.tum.de> | 2012-03-06 12:49:02 +0000 |
---|---|---|
committer | Matthias Wachs <wachs@net.in.tum.de> | 2012-03-06 12:49:02 +0000 |
commit | 46bab5b9f9afefaac097767ea356defea5efbbaa (patch) | |
tree | 04c8c00d8b5f2f91efe6ea3b9a6303dea28b4cbd /src | |
parent | 10b2ef580e79924e9117e1654dd9d58b23d618e2 (diff) | |
download | gnunet-46bab5b9f9afefaac097767ea356defea5efbbaa.tar.gz gnunet-46bab5b9f9afefaac097767ea356defea5efbbaa.zip |
- fixes for put and lookup
Diffstat (limited to 'src')
-rw-r--r-- | src/namestore/gnunet-service-namestore.c | 14 | ||||
-rw-r--r-- | src/namestore/namestore.h | 5 | ||||
-rw-r--r-- | src/namestore/namestore_api.c | 20 |
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 | */ |
291 | struct RecordCreateMessage | 292 | struct 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); |