[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r30357 - gnunet/src/gns
From: |
gnunet |
Subject: |
[GNUnet-SVN] r30357 - gnunet/src/gns |
Date: |
Sun, 20 Oct 2013 15:58:13 +0200 |
Author: grothoff
Date: 2013-10-20 15:58:13 +0200 (Sun, 20 Oct 2013)
New Revision: 30357
Modified:
gnunet/src/gns/Makefile.am
gnunet/src/gns/gnunet-service-gns_resolver.c
Log:
-trying to implement revocation
Modified: gnunet/src/gns/Makefile.am
===================================================================
--- gnunet/src/gns/Makefile.am 2013-10-20 13:49:32 UTC (rev 30356)
+++ gnunet/src/gns/Makefile.am 2013-10-20 13:58:13 UTC (rev 30357)
@@ -159,6 +159,7 @@
gnunet_service_gns_LDADD = \
-lm \
$(top_builddir)/src/gnsrecord/libgnunetgnsrecord.la \
+ $(top_builddir)/src/revocation/libgnunetrevocation.la \
$(top_builddir)/src/statistics/libgnunetstatistics.la \
$(top_builddir)/src/util/libgnunetutil.la \
$(top_builddir)/src/dns/libgnunetdns.la \
@@ -171,6 +172,7 @@
$(GN_LIBINTL)
gnunet_service_gns_DEPENDENCIES = \
$(top_builddir)/src/gnsrecord/libgnunetgnsrecord.la \
+ $(top_builddir)/src/revocation/libgnunetrevocation.la \
$(top_builddir)/src/statistics/libgnunetstatistics.la \
$(top_builddir)/src/util/libgnunetutil.la \
$(top_builddir)/src/dns/libgnunetdns.la \
Modified: gnunet/src/gns/gnunet-service-gns_resolver.c
===================================================================
--- gnunet/src/gns/gnunet-service-gns_resolver.c 2013-10-20 13:49:32 UTC
(rev 30356)
+++ gnunet/src/gns/gnunet-service-gns_resolver.c 2013-10-20 13:58:13 UTC
(rev 30357)
@@ -39,6 +39,7 @@
#include "gnunet_namestore_service.h"
#include "gnunet_dns_service.h"
#include "gnunet_resolver_service.h"
+#include "gnunet_revocation_service.h"
#include "gnunet_dnsparser_lib.h"
#include "gnunet_gns_service.h"
#include "gns.h"
@@ -270,6 +271,11 @@
struct GNUNET_NAMECACHE_QueueEntry *namecache_qe;
/**
+ * Pending revocation check.
+ */
+ struct GNUNET_REVOCATION_Query *rev_check;
+
+ /**
* Heap node associated with this lookup. Used to limit number of
* concurrent requests.
*/
@@ -1890,6 +1896,54 @@
/**
+ * Function called with the result from a revocation check.
+ *
+ * @param cls the `struct GNS_ResovlerHandle`
+ * @param is_valid #GNUNET_YES if the zone was not yet revoked
+ */
+static void
+handle_revocation_result (void *cls,
+ int is_valid)
+{
+ struct GNS_ResolverHandle *rh = cls;
+ struct AuthorityChain *ac = rh->ac_tail;
+
+ rh->rev_check = NULL;
+ if (GNUNET_YES != is_valid)
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ _("Zone %s was revoked, resolution fails\n"),
+ GNUNET_GNSRECORD_z2s (&ac->authority_info.gns_authority));
+ rh->proc (rh->proc_cls, 0, NULL);
+ GNS_resolver_lookup_cancel (rh);
+ return;
+ }
+ recursive_gns_resolution_namestore (rh);
+}
+
+
+/**
+ * Perform revocation check on tail of our authority chain.
+ *
+ * @param rh query we are processing
+ */
+static void
+recursive_gns_resolution_revocation (struct GNS_ResolverHandle *rh)
+{
+ struct AuthorityChain *ac = rh->ac_tail;
+
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Starting revocation check for zone %s\n",
+ GNUNET_GNSRECORD_z2s (&ac->authority_info.gns_authority));
+ rh->rev_check = GNUNET_REVOCATION_query (cfg,
+ &ac->authority_info.gns_authority,
+ &handle_revocation_result,
+ rh);
+ GNUNET_assert (NULL != rh->rev_check);
+}
+
+
+/**
* Task scheduled to continue with the resolution process.
*
* @param cls the `struct GNS_ResolverHandle` of the resolution
@@ -1912,7 +1966,7 @@
return;
}
if (GNUNET_YES == rh->ac_tail->gns_authority)
- recursive_gns_resolution_namestore (rh);
+ recursive_gns_resolution_revocation (rh);
else
recursive_dns_resolution (rh);
}
@@ -2112,6 +2166,11 @@
GNUNET_NAMECACHE_cancel (rh->namecache_qe);
rh->namecache_qe = NULL;
}
+ if (NULL != rh->rev_check)
+ {
+ GNUNET_REVOCATION_query_cancel (rh->rev_check);
+ rh->rev_check = NULL;
+ }
if (NULL != rh->std_resolve)
{
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r30357 - gnunet/src/gns,
gnunet <=