From: Martin Schanzenbach Date: Tue, 28 Feb 2012 09:27:53 +0000 (+0000) Subject: -fix xquery X-Git-Tag: initial-import-from-subversion-38251~14586 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=a1276ebb880de3ab5cb711f69168468654937bf4;p=oweals%2Fgnunet.git -fix xquery --- diff --git a/src/gns/gnunet-service-gns.c b/src/gns/gnunet-service-gns.c index e236716ea..b5649f35c 100644 --- a/src/gns/gnunet-service-gns.c +++ b/src/gns/gnunet-service-gns.c @@ -323,8 +323,8 @@ resolve_authority_dht(struct GNUNET_GNS_ResolverHandle *rh) &lookup_key, 5, //Replication level FIXME GNUNET_DHT_RO_NONE, - &xquery, //xquery FIXME is this bad? - 0, // for test bp sizeof(GNUNET_GNS_RECORD_PKEY), + &xquery, + sizeof(xquery), &process_authority_dht_result, rh); @@ -470,7 +470,7 @@ resolve_name_dht(struct GNUNET_GNS_ResolverHandle *rh, const char* name) 5, //Replication level FIXME GNUNET_DHT_RO_NONE, &xquery, //xquery FIXME is this bad? - 0, //for test bp sizeof(rh->query->type), + sizeof(xquery), &process_name_dht_result, rh); diff --git a/src/gns/plugin_block_gns.c b/src/gns/plugin_block_gns.c index 8a2cb0727..a4d6ad9c8 100644 --- a/src/gns/plugin_block_gns.c +++ b/src/gns/plugin_block_gns.c @@ -86,27 +86,17 @@ block_plugin_gns_evaluate (void *cls, enum GNUNET_BLOCK_Type type, GNUNET_CRYPTO_hash(name, strlen(name), &name_hash); GNUNET_CRYPTO_hash_xor(&pkey_hash, &name_hash, &query_key); - struct GNUNET_CRYPTO_HashAsciiEncoded hstr; - GNUNET_CRYPTO_hash_to_enc (query, &hstr); - GNUNET_log(GNUNET_ERROR_TYPE_INFO, "Query key: %s\n", (char*)&hstr); - GNUNET_CRYPTO_hash_to_enc (&pkey_hash, &hstr); - GNUNET_log(GNUNET_ERROR_TYPE_INFO, "Pub key: %s\n", (char*)&hstr); - GNUNET_CRYPTO_hash_to_enc (&name_hash, &hstr); - GNUNET_log(GNUNET_ERROR_TYPE_INFO, "Name: %s\n", (char*)&hstr); - GNUNET_CRYPTO_hash_to_enc (&query_key, &hstr); - GNUNET_log(GNUNET_ERROR_TYPE_INFO, "XOR: %s\n", (char*)&hstr); - - //Check query key against public key + /* Check query key against public key */ if (0 != GNUNET_CRYPTO_hash_cmp(query, &query_key)) return GNUNET_BLOCK_EVALUATION_REQUEST_VALID; - GNUNET_log(GNUNET_ERROR_TYPE_INFO, "Checking payload\n"); rd_count = ntohl(nrb->rd_count); struct GNUNET_NAMESTORE_RecordData rd[rd_count]; int i = 0; int record_match = 0; + uint32_t record_xquery = ntohl(*((uint32_t*)xquery)); rb = (struct GNSRecordBlock*)(&name[strlen(name) + 1]); for (i=0; iflags); rd[i].data = (char*)&rb[1]; rb = (struct GNSRecordBlock *)((char*)&rb[1] + rd[i].data_size); - if (xquery_size > 0 && (rd[i].record_type == *((uint32_t*)xquery))) + + if (xquery_size == 0) + continue; + + if (rd[i].record_type == record_xquery) + { record_match++; + } } - GNUNET_log(GNUNET_ERROR_TYPE_INFO, "done\n"); /*if (GNUNET_OK != GNUNET_NAMESTORE_verify_signature (&nrb->public_key, @@ -133,10 +128,11 @@ block_plugin_gns_evaluate (void *cls, enum GNUNET_BLOCK_Type type, GNUNET_log(GNUNET_ERROR_TYPE_INFO, "Signature invalid\n"); return GNUNET_BLOCK_EVALUATION_REQUEST_INVALID; }*/ - GNUNET_log(GNUNET_ERROR_TYPE_INFO, "done\n"); + //No record matches query if ((xquery_size > 0) && (record_match == 0)) - return GNUNET_BLOCK_EVALUATION_OK_MORE; + return GNUNET_BLOCK_EVALUATION_REQUEST_VALID; + GNUNET_log(GNUNET_ERROR_TYPE_INFO, "Records match\n"); //FIXME do bf check before or after crypto?? if (NULL != bf)