diff options
Diffstat (limited to 'src/gns')
-rw-r--r-- | src/gns/gnunet-service-gns_resolver.c | 7 | ||||
-rw-r--r-- | src/gns/plugin_gnsrecord_gns.c | 15 |
2 files changed, 21 insertions, 1 deletions
diff --git a/src/gns/gnunet-service-gns_resolver.c b/src/gns/gnunet-service-gns_resolver.c index 51e650b4f..f232fb272 100644 --- a/src/gns/gnunet-service-gns_resolver.c +++ b/src/gns/gnunet-service-gns_resolver.c | |||
@@ -2393,12 +2393,17 @@ handle_gns_resolution_result (void *cls, | |||
2393 | &rd[0]); | 2393 | &rd[0]); |
2394 | return; | 2394 | return; |
2395 | 2395 | ||
2396 | default: | 2396 | case GNUNET_GNSRECORD_TYPE_GNS2DNS: |
2397 | if (GNUNET_OK == | 2397 | if (GNUNET_OK == |
2398 | recursive_gns2dns_resolution (rh, | 2398 | recursive_gns2dns_resolution (rh, |
2399 | rd_count, | 2399 | rd_count, |
2400 | rd)) | 2400 | rd)) |
2401 | return; | 2401 | return; |
2402 | default: | ||
2403 | if (GNUNET_YES != GNUNET_GNSRECORD_is_critical (rd[0].record_type)) | ||
2404 | return; | ||
2405 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | ||
2406 | _ ("Unable to process critical delegation record\n")); | ||
2402 | break; | 2407 | break; |
2403 | } | 2408 | } |
2404 | fail: | 2409 | fail: |
diff --git a/src/gns/plugin_gnsrecord_gns.c b/src/gns/plugin_gnsrecord_gns.c index b37e84ea3..f270e4473 100644 --- a/src/gns/plugin_gnsrecord_gns.c +++ b/src/gns/plugin_gnsrecord_gns.c | |||
@@ -323,6 +323,7 @@ static struct | |||
323 | { "VPN", GNUNET_GNSRECORD_TYPE_VPN }, | 323 | { "VPN", GNUNET_GNSRECORD_TYPE_VPN }, |
324 | { "GNS2DNS", GNUNET_GNSRECORD_TYPE_GNS2DNS }, | 324 | { "GNS2DNS", GNUNET_GNSRECORD_TYPE_GNS2DNS }, |
325 | { "BOX", GNUNET_GNSRECORD_TYPE_BOX }, | 325 | { "BOX", GNUNET_GNSRECORD_TYPE_BOX }, |
326 | { "REDIRECT", GNUNET_GNSRECORD_TYPE_REDIRECT }, | ||
326 | { NULL, UINT32_MAX } }; | 327 | { NULL, UINT32_MAX } }; |
327 | 328 | ||
328 | 329 | ||
@@ -365,6 +366,19 @@ gns_number_to_typename (void *cls, uint32_t type) | |||
365 | } | 366 | } |
366 | 367 | ||
367 | 368 | ||
369 | static enum GNUNET_GenericReturnValue | ||
370 | gns_is_critical (void *cls, uint32_t type) | ||
371 | { | ||
372 | return ((type == GNUNET_GNSRECORD_TYPE_PKEY) || | ||
373 | (type == GNUNET_GNSRECORD_TYPE_EDKEY) || | ||
374 | (type == GNUNET_GNSRECORD_TYPE_GNS2DNS) || | ||
375 | (type == GNUNET_GNSRECORD_TYPE_REDIRECT) ? | ||
376 | GNUNET_YES : GNUNET_NO); | ||
377 | } | ||
378 | |||
379 | |||
380 | |||
381 | |||
368 | /** | 382 | /** |
369 | * Entry point for the plugin. | 383 | * Entry point for the plugin. |
370 | * | 384 | * |
@@ -381,6 +395,7 @@ libgnunet_plugin_gnsrecord_gns_init (void *cls) | |||
381 | api->string_to_value = &gns_string_to_value; | 395 | api->string_to_value = &gns_string_to_value; |
382 | api->typename_to_number = &gns_typename_to_number; | 396 | api->typename_to_number = &gns_typename_to_number; |
383 | api->number_to_typename = &gns_number_to_typename; | 397 | api->number_to_typename = &gns_number_to_typename; |
398 | api->is_critical = &gns_is_critical; | ||
384 | return api; | 399 | return api; |
385 | } | 400 | } |
386 | 401 | ||