-fixes, block plugin change
authorMartin Schanzenbach <mschanzenbach@posteo.de>
Thu, 15 Mar 2012 14:05:23 +0000 (14:05 +0000)
committerMartin Schanzenbach <mschanzenbach@posteo.de>
Thu, 15 Mar 2012 14:05:23 +0000 (14:05 +0000)
src/gns/gnunet-service-gns_resolver.c
src/gns/plugin_block_gns.c

index 3a94556b734262a135533b452a65d8e8420e33cd..dee082e9944702d014587664476c07d9e4422f03 100644 (file)
@@ -602,8 +602,8 @@ process_delegation_result_dht(void* cls,
    * should never get here unless false dht key/put
    * block plugin should handle this
    **/
-  GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "DHT authority lookup error!\n");
-  GNUNET_break(0);
+  GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "DHT authority lookup found no match!\n");
+  rh->proc(rh->proc_cls, rh, 0, NULL);
 }
 
 
index 3071ef64ef91345ee70921958490381cfc696f7c..46db6a22a7b44bbfa69c9b9fe61853aaec271f82 100644 (file)
@@ -77,9 +77,20 @@ block_plugin_gns_evaluate (void *cls, enum GNUNET_BLOCK_Type type,
 
   if (type != GNUNET_BLOCK_TYPE_GNS_NAMERECORD)
     return GNUNET_BLOCK_EVALUATION_TYPE_NOT_SUPPORTED;
-  if (reply_block_size == 0)
-    return GNUNET_BLOCK_EVALUATION_REQUEST_VALID;
-    
+  if (reply_block == NULL)
+  {
+    /**
+     *  check if request is valid
+     *  FIXME we could check for the record types here
+     **/
+    if (xquery_size < sizeof(uint32_t))
+      return GNUNET_BLOCK_EVALUATION_REQUEST_INVALID;
+    else
+      return GNUNET_BLOCK_EVALUATION_REQUEST_VALID;
+  }
+  
+  /* this is a reply */
+
   nrb = (struct GNSNameRecordBlock *)reply_block;
   name = (char*)&nrb[1];
   GNUNET_CRYPTO_hash(&nrb->public_key,
@@ -101,7 +112,7 @@ block_plugin_gns_evaluate (void *cls, enum GNUNET_BLOCK_Type type,
 
   /* Check query key against public key */
   if (0 != GNUNET_CRYPTO_hash_cmp(query, &query_key))
-    return GNUNET_BLOCK_EVALUATION_REQUEST_VALID;
+    return GNUNET_BLOCK_EVALUATION_RESULT_INVALID;
   
   record_match = 0;
   rd_count = ntohl(nrb->rd_count);
@@ -121,7 +132,7 @@ block_plugin_gns_evaluate (void *cls, enum GNUNET_BLOCK_Type type,
     {
       GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
                  "Data invalid (%d bytes, %d records)\n", rd_len, rd_count);
-      return GNUNET_BLOCK_EVALUATION_REQUEST_INVALID;
+      return GNUNET_BLOCK_EVALUATION_RESULT_INVALID;
     }
 
     if (xquery_size < sizeof(uint32_t))
@@ -156,19 +167,10 @@ block_plugin_gns_evaluate (void *cls, enum GNUNET_BLOCK_Type type,
                                                         &nrb->signature))
     {
       GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Signature invalid\n");
-      return GNUNET_BLOCK_EVALUATION_REQUEST_INVALID;
+      return GNUNET_BLOCK_EVALUATION_RESULT_INVALID;
     }
   }
   
-  if ((record_xquery != 0) && (record_match == 0))
-  {
-    GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
-               "No record matches query!\n");
-    return GNUNET_BLOCK_EVALUATION_REQUEST_VALID;
-  }
-
-  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Records match\n");
-  
   if (NULL != bf)
   {
     GNUNET_CRYPTO_hash(reply_block, reply_block_size, &chash);