[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r22344 - gnunet/src/gns
From: |
gnunet |
Subject: |
[GNUnet-SVN] r22344 - gnunet/src/gns |
Date: |
Wed, 27 Jun 2012 14:00:59 +0200 |
Author: schanzen
Date: 2012-06-27 14:00:59 +0200 (Wed, 27 Jun 2012)
New Revision: 22344
Modified:
gnunet/src/gns/gnunet-service-gns.c
Log:
-add af check
Modified: gnunet/src/gns/gnunet-service-gns.c
===================================================================
--- gnunet/src/gns/gnunet-service-gns.c 2012-06-27 11:49:24 UTC (rev 22343)
+++ gnunet/src/gns/gnunet-service-gns.c 2012-06-27 12:00:59 UTC (rev 22344)
@@ -187,6 +187,12 @@
/* name of the public zone */
static char *shorten_zone_id;
+/* ipv6 support */
+static int v6_enabled;
+
+/* ipv4 support */
+static int v4_enabled;
+
/**
* Continue shutdown
*/
@@ -944,6 +950,26 @@
return;
}
+ if ((clh->type == GNUNET_GNS_RECORD_TYPE_A) &&
+ (GNUNET_OK != v4_enabled))
+ {
+ GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+ "LOOKUP: Query for A record but AF_INET not supported!");
+ clh->name = NULL;
+ send_lookup_response(clh, 0, NULL);
+ return;
+ }
+
+ if ((clh->type == GNUNET_GNS_RECORD_AAAA) &&
+ (GNUNET_OK != v6_enabled))
+ {
+ GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+ "LOOKUP: Query for AAAA record but AF_INET6 not supported!");
+ clh->name = NULL;
+ send_lookup_response(clh, 0, NULL);
+ return;
+ }
+
if (1 == ntohl(sh_msg->use_default_zone))
clh->zone = zone_hash; //Default zone
else
@@ -967,7 +993,28 @@
}
}
+/**
+ * Test if the given AF is supported by this system.
+ *
+ * @param af to test
+ * @return GNUNET_OK if the AF is supported
+ */
+static int
+test_af (int af)
+{
+ int s;
+ s = socket (af, SOCK_STREAM, 0);
+ if (-1 == s)
+ {
+ if (EAFNOSUPPORT == errno)
+ return GNUNET_NO;
+ fprintf (stderr, "Failed to create test socket: %s\n", STRERROR (errno));
+ return GNUNET_SYSERR;
+ }
+ close (s);
+ return GNUNET_OK;
+}
/**
* Process GNS requests.
@@ -997,6 +1044,9 @@
GNS_cfg = c;
+ v6_enabled = test_af (AF_INET6);
+ v4_enabled = test_af (AF_INET);
+
if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_filename (c, "gns",
"ZONEKEY", &keyfile))
{
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r22344 - gnunet/src/gns,
gnunet <=