diff options
author | Christian Grothoff <christian@grothoff.org> | 2013-12-16 21:47:50 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2013-12-16 21:47:50 +0000 |
commit | d4110a7d8d9d2559b0806f3f993ea197ae4ddb67 (patch) | |
tree | 6b301815dc56449f7d1973f1bb395e69a677fd10 | |
parent | aed4626fc179259154c05413717076de7c85b1a7 (diff) | |
download | gnunet-d4110a7d8d9d2559b0806f3f993ea197ae4ddb67.tar.gz gnunet-d4110a7d8d9d2559b0806f3f993ea197ae4ddb67.zip |
-never store NICKs anywhere but in '+', do not display nicks in gnunet-namestore
-rw-r--r-- | src/namestore/gnunet-namestore.c | 3 | ||||
-rw-r--r-- | src/namestore/gnunet-service-namestore.c | 42 | ||||
-rw-r--r-- | src/namestore/namestore_api.c | 2 |
3 files changed, 32 insertions, 15 deletions
diff --git a/src/namestore/gnunet-namestore.c b/src/namestore/gnunet-namestore.c index 0a030acc5..e985e1b04 100644 --- a/src/namestore/gnunet-namestore.c +++ b/src/namestore/gnunet-namestore.c | |||
@@ -1,4 +1,3 @@ | |||
1 | |||
2 | /* | 1 | /* |
3 | This file is part of GNUnet. | 2 | This file is part of GNUnet. |
4 | (C) 2012, 2013 Christian Grothoff (and other contributing authors) | 3 | (C) 2012, 2013 Christian Grothoff (and other contributing authors) |
@@ -385,6 +384,8 @@ display_record (void *cls, | |||
385 | rname); | 384 | rname); |
386 | for (i=0;i<rd_len;i++) | 385 | for (i=0;i<rd_len;i++) |
387 | { | 386 | { |
387 | if (GNUNET_GNSRECORD_TYPE_NICK == rd[i].record_type) | ||
388 | continue; | ||
388 | typestring = GNUNET_GNSRECORD_number_to_typename (rd[i].record_type); | 389 | typestring = GNUNET_GNSRECORD_number_to_typename (rd[i].record_type); |
389 | s = GNUNET_GNSRECORD_value_to_string (rd[i].record_type, | 390 | s = GNUNET_GNSRECORD_value_to_string (rd[i].record_type, |
390 | rd[i].data, | 391 | rd[i].data, |
diff --git a/src/namestore/gnunet-service-namestore.c b/src/namestore/gnunet-service-namestore.c index c2b62419d..64c844d1c 100644 --- a/src/namestore/gnunet-service-namestore.c +++ b/src/namestore/gnunet-service-namestore.c | |||
@@ -495,6 +495,7 @@ merge_with_nick_records ( const struct GNUNET_GNSRECORD_Data *nick_rd, | |||
495 | latest_expiration = rd2[c].expiration_time; | 495 | latest_expiration = rd2[c].expiration_time; |
496 | (*rd_res)[c] = rd2[c]; | 496 | (*rd_res)[c] = rd2[c]; |
497 | (*rd_res)[c].data = (void *) &data[data_offset]; | 497 | (*rd_res)[c].data = (void *) &data[data_offset]; |
498 | // WTF? | ||
498 | memcpy ((void *) (*rd_res)[c].data, rd2[c].data, rd2[c].data_size); | 499 | memcpy ((void *) (*rd_res)[c].data, rd2[c].data, rd2[c].data_size); |
499 | data_offset += (*rd_res)[c].data_size; | 500 | data_offset += (*rd_res)[c].data_size; |
500 | } | 501 | } |
@@ -504,7 +505,10 @@ merge_with_nick_records ( const struct GNUNET_GNSRECORD_Data *nick_rd, | |||
504 | (*rd_res)[c+record_offset] = nick_rd[c]; | 505 | (*rd_res)[c+record_offset] = nick_rd[c]; |
505 | (*rd_res)[c+record_offset].expiration_time = latest_expiration; | 506 | (*rd_res)[c+record_offset].expiration_time = latest_expiration; |
506 | (*rd_res)[c+record_offset].data = (void *) &data[data_offset]; | 507 | (*rd_res)[c+record_offset].data = (void *) &data[data_offset]; |
507 | memcpy ((void *) (*rd_res)[c+record_offset].data, nick_rd[c].data, nick_rd[c].data_size); | 508 | // WTF? |
509 | memcpy ((void *) (*rd_res)[c+record_offset].data, | ||
510 | nick_rd[c].data, | ||
511 | nick_rd[c].data_size); | ||
508 | data_offset += (*rd_res)[c+record_offset].data_size; | 512 | data_offset += (*rd_res)[c+record_offset].data_size; |
509 | } | 513 | } |
510 | GNUNET_assert (req == (sizeof (struct GNUNET_GNSRECORD_Data)) * (*rdc_res) + data_offset); | 514 | GNUNET_assert (req == (sizeof (struct GNUNET_GNSRECORD_Data)) * (*rdc_res) + data_offset); |
@@ -546,7 +550,7 @@ send_lookup_response (struct GNUNET_SERVER_NotificationContext *nc, | |||
546 | if ((NULL != nick) && (0 != strcmp(name, GNUNET_GNS_MASTERZONE_STR))) | 550 | if ((NULL != nick) && (0 != strcmp(name, GNUNET_GNS_MASTERZONE_STR))) |
547 | { | 551 | { |
548 | nick->flags = (nick->flags | GNUNET_GNSRECORD_RF_PRIVATE) ^ GNUNET_GNSRECORD_RF_PRIVATE; | 552 | nick->flags = (nick->flags | GNUNET_GNSRECORD_RF_PRIVATE) ^ GNUNET_GNSRECORD_RF_PRIVATE; |
549 | merge_with_nick_records (nick, rd_count,rd, &res_count, &res); | 553 | merge_with_nick_records (nick, rd_count, rd, &res_count, &res); |
550 | //fprintf (stderr, "Merging %u records for `%s' with NICK records\n",rd_count, name); | 554 | //fprintf (stderr, "Merging %u records for `%s' with NICK records\n",rd_count, name); |
551 | GNUNET_free (nick); | 555 | GNUNET_free (nick); |
552 | } | 556 | } |
@@ -732,11 +736,12 @@ struct RecordLookupContext | |||
732 | }; | 736 | }; |
733 | 737 | ||
734 | 738 | ||
735 | |||
736 | static void | 739 | static void |
737 | lookup_it (void *cls, const struct GNUNET_CRYPTO_EcdsaPrivateKey *private_key, | 740 | lookup_it (void *cls, |
738 | const char *label, unsigned int rd_count, | 741 | const struct GNUNET_CRYPTO_EcdsaPrivateKey *private_key, |
739 | const struct GNUNET_GNSRECORD_Data *rd) | 742 | const char *label, |
743 | unsigned int rd_count, | ||
744 | const struct GNUNET_GNSRECORD_Data *rd) | ||
740 | { | 745 | { |
741 | struct RecordLookupContext *rlc = cls; | 746 | struct RecordLookupContext *rlc = cls; |
742 | struct GNUNET_GNSRECORD_Data *rd_res; | 747 | struct GNUNET_GNSRECORD_Data *rd_res; |
@@ -753,9 +758,9 @@ lookup_it (void *cls, const struct GNUNET_CRYPTO_EcdsaPrivateKey *private_key, | |||
753 | rd_res = NULL; | 758 | rd_res = NULL; |
754 | rdc_res = 0; | 759 | rdc_res = 0; |
755 | rlc->nick->flags = (rlc->nick->flags | GNUNET_GNSRECORD_RF_PRIVATE) ^ GNUNET_GNSRECORD_RF_PRIVATE; | 760 | rlc->nick->flags = (rlc->nick->flags | GNUNET_GNSRECORD_RF_PRIVATE) ^ GNUNET_GNSRECORD_RF_PRIVATE; |
756 | merge_with_nick_records ( rlc->nick, | 761 | merge_with_nick_records (rlc->nick, |
757 | rd_count, rd, | 762 | rd_count, rd, |
758 | &rdc_res, &rd_res); | 763 | &rdc_res, &rd_res); |
759 | 764 | ||
760 | rlc->rd_ser_len = GNUNET_GNSRECORD_records_get_size (rdc_res, rd_res); | 765 | rlc->rd_ser_len = GNUNET_GNSRECORD_records_get_size (rdc_res, rd_res); |
761 | rlc->res_rd_count = rdc_res; | 766 | rlc->res_rd_count = rdc_res; |
@@ -784,9 +789,6 @@ lookup_it (void *cls, const struct GNUNET_CRYPTO_EcdsaPrivateKey *private_key, | |||
784 | } | 789 | } |
785 | 790 | ||
786 | 791 | ||
787 | |||
788 | |||
789 | |||
790 | /** | 792 | /** |
791 | * Handles a #GNUNET_MESSAGE_TYPE_NAMESTORE_RECORD_LOOKUP message | 793 | * Handles a #GNUNET_MESSAGE_TYPE_NAMESTORE_RECORD_LOOKUP message |
792 | * | 794 | * |
@@ -987,10 +989,24 @@ handle_record_store (void *cls, | |||
987 | } | 989 | } |
988 | else | 990 | else |
989 | { | 991 | { |
992 | struct GNUNET_GNSRECORD_Data rd_clean[rd_count]; | ||
993 | unsigned int i; | ||
994 | unsigned int rd_clean_off; | ||
995 | |||
996 | /* remove "NICK" records, unless this is for the "+" label */ | ||
997 | rd_clean_off = 0; | ||
998 | for (i=0;i<rd_count;i++) | ||
999 | { | ||
1000 | rd_clean[rd_clean_off] = rd[i]; | ||
1001 | if ( (0 == strcmp (GNUNET_GNS_MASTERZONE_STR, | ||
1002 | conv_name)) || | ||
1003 | (GNUNET_GNSRECORD_TYPE_NICK != rd[i].record_type) ) | ||
1004 | rd_clean_off++; | ||
1005 | } | ||
990 | res = GSN_database->store_records (GSN_database->cls, | 1006 | res = GSN_database->store_records (GSN_database->cls, |
991 | &rp_msg->private_key, | 1007 | &rp_msg->private_key, |
992 | conv_name, | 1008 | conv_name, |
993 | rd_count, rd); | 1009 | rd_clean_off, rd_clean); |
994 | if (GNUNET_OK == res) | 1010 | if (GNUNET_OK == res) |
995 | { | 1011 | { |
996 | for (zm = monitor_head; NULL != zm; zm = zm->next) | 1012 | for (zm = monitor_head; NULL != zm; zm = zm->next) |
diff --git a/src/namestore/namestore_api.c b/src/namestore/namestore_api.c index a924a4511..c089929a6 100644 --- a/src/namestore/namestore_api.c +++ b/src/namestore/namestore_api.c | |||
@@ -999,7 +999,7 @@ GNUNET_NAMESTORE_disconnect (struct GNUNET_NAMESTORE_Handle *h) | |||
999 | * @param rd_count number of records in the 'rd' array | 999 | * @param rd_count number of records in the 'rd' array |
1000 | * @param rd array of records with data to store | 1000 | * @param rd array of records with data to store |
1001 | * @param cont continuation to call when done | 1001 | * @param cont continuation to call when done |
1002 | * @param cont_cls closure for 'cont' | 1002 | * @param cont_cls closure for @a cont |
1003 | * @return handle to abort the request | 1003 | * @return handle to abort the request |
1004 | */ | 1004 | */ |
1005 | struct GNUNET_NAMESTORE_QueueEntry * | 1005 | struct GNUNET_NAMESTORE_QueueEntry * |