aboutsummaryrefslogtreecommitdiff
path: root/src/gns
diff options
context:
space:
mode:
authorPhil <phil.buschmann@tum.de>2018-06-25 00:17:34 +0200
committerPhil <phil.buschmann@tum.de>2018-06-25 00:17:34 +0200
commitdb8c5cd31a92cd18450bf9d2d595a8fd314583e0 (patch)
tree01fd1779157a215346618ff0a575ef150051d154 /src/gns
parent4e6cb01843318385cfad41aec4cde5791f51cde2 (diff)
parentd87371054ac03be953cb8b2d216e735d99515ca4 (diff)
downloadgnunet-db8c5cd31a92cd18450bf9d2d595a8fd314583e0.tar.gz
gnunet-db8c5cd31a92cd18450bf9d2d595a8fd314583e0.zip
-Merge branch 'master' of ssh://gnunet.org/gnunet into gsoc2018/rest_api
Diffstat (limited to 'src/gns')
-rw-r--r--src/gns/gns-helper-service-w32.conf2
-rw-r--r--src/gns/gns.conf.in14
-rw-r--r--src/gns/gns_api.c6
-rw-r--r--src/gns/gns_tld_api.c6
-rw-r--r--src/gns/gnunet-gns-proxy.c201
-rw-r--r--src/gns/gnunet-service-gns_interceptor.c2
-rw-r--r--src/gns/gnunet-service-gns_resolver.c4
-rw-r--r--src/gns/test_gns_lookup.conf4
-rw-r--r--src/gns/test_gns_nick_shorten.conf4
-rw-r--r--src/gns/test_gns_proxy.conf4
-rw-r--r--src/gns/test_gns_simple_lookup.conf16
11 files changed, 144 insertions, 119 deletions
diff --git a/src/gns/gns-helper-service-w32.conf b/src/gns/gns-helper-service-w32.conf
index 48652173a..a7b9fdd70 100644
--- a/src/gns/gns-helper-service-w32.conf
+++ b/src/gns/gns-helper-service-w32.conf
@@ -1,4 +1,4 @@
1[gns-helper-service-w32] 1[gns-helper-service-w32]
2AUTOSTART = YES 2START_ON_DEMAND = YES
3BINARY = gnunet-gns-helper-service-w32 3BINARY = gnunet-gns-helper-service-w32
4PORT = 5353 4PORT = 5353
diff --git a/src/gns/gns.conf.in b/src/gns/gns.conf.in
index f7682cda7..2e6a02b07 100644
--- a/src/gns/gns.conf.in
+++ b/src/gns/gns.conf.in
@@ -1,6 +1,6 @@
1[gns] 1[gns]
2AUTOSTART = @AUTOSTART@ 2START_ON_DEMAND = @START_ON_DEMAND@
3FORCESTART = YES 3IMMEDIATE_START = YES
4HOSTNAME = localhost 4HOSTNAME = localhost
5BINARY = gnunet-service-gns 5BINARY = gnunet-service-gns
6UNIXPATH = $GNUNET_USER_RUNTIME_DIR/gnunet-service-gns.sock 6UNIXPATH = $GNUNET_USER_RUNTIME_DIR/gnunet-service-gns.sock
@@ -20,7 +20,7 @@ MAX_PARALLEL_BACKGROUND_QUERIES = 1000
20# we will ask gnunet-service-dns to pass DNS queries to us. Otherwise, 20# we will ask gnunet-service-dns to pass DNS queries to us. Otherwise,
21# we only answer GNS queries via the API (which itself may be 21# we only answer GNS queries via the API (which itself may be
22# called via NSS or other mechanisms). 22# called via NSS or other mechanisms).
23INTERCEPT_DNS = YES 23INTERCEPT_DNS = NO
24 24
25# PREFIX = valgrind --leak-check=full --track-origins=yes 25# PREFIX = valgrind --leak-check=full --track-origins=yes
26 26
@@ -30,8 +30,8 @@ INTERCEPT_DNS = YES
30 30
31[gns-proxy] 31[gns-proxy]
32BINARY = gnunet-gns-proxy 32BINARY = gnunet-gns-proxy
33AUTOSTART = NO 33START_ON_DEMAND = NO
34USER_SERVICE = YES 34RUN_PER_USER = YES
35 35
36# Where is the certificate for the GNS proxy stored? 36# Where is the certificate for the GNS proxy stored?
37PROXY_CACERT = $GNUNET_DATA_HOME/gns/gns_ca_cert.pem 37PROXY_CACERT = $GNUNET_DATA_HOME/gns/gns_ca_cert.pem
@@ -40,8 +40,8 @@ PROXY_UNIXPATH = $GNUNET_RUNTIME_DIR/gnunet-gns-proxy.sock
40 40
41[dns2gns] 41[dns2gns]
42BINARY = gnunet-dns2gns 42BINARY = gnunet-dns2gns
43AUTOSTART = NO 43START_ON_DEMAND = NO
44USER_SERVICE = YES 44RUN_PER_USER = YES
45 45
46# -d: DNS resolver to use, -s: suffix to use, -f: fcfs suffix to use 46# -d: DNS resolver to use, -s: suffix to use, -f: fcfs suffix to use
47OPTIONS = -d 8.8.8.8 47OPTIONS = -d 8.8.8.8
diff --git a/src/gns/gns_api.c b/src/gns/gns_api.c
index 8264bf715..0ec9209da 100644
--- a/src/gns/gns_api.c
+++ b/src/gns/gns_api.c
@@ -300,17 +300,21 @@ GNUNET_GNS_disconnect (struct GNUNET_GNS_Handle *handle)
300 * Cancel pending lookup request 300 * Cancel pending lookup request
301 * 301 *
302 * @param lr the lookup request to cancel 302 * @param lr the lookup request to cancel
303 * @return closure from the lookup result processor
303 */ 304 */
304void 305void *
305GNUNET_GNS_lookup_cancel (struct GNUNET_GNS_LookupRequest *lr) 306GNUNET_GNS_lookup_cancel (struct GNUNET_GNS_LookupRequest *lr)
306{ 307{
307 struct GNUNET_GNS_Handle *handle = lr->gns_handle; 308 struct GNUNET_GNS_Handle *handle = lr->gns_handle;
309 void *ret;
308 310
309 GNUNET_CONTAINER_DLL_remove (handle->lookup_head, 311 GNUNET_CONTAINER_DLL_remove (handle->lookup_head,
310 handle->lookup_tail, 312 handle->lookup_tail,
311 lr); 313 lr);
312 GNUNET_MQ_discard (lr->env); 314 GNUNET_MQ_discard (lr->env);
315 ret = lr->proc_cls;
313 GNUNET_free (lr); 316 GNUNET_free (lr);
317 return ret;
314} 318}
315 319
316 320
diff --git a/src/gns/gns_tld_api.c b/src/gns/gns_tld_api.c
index b053aa0c1..825b51d06 100644
--- a/src/gns/gns_tld_api.c
+++ b/src/gns/gns_tld_api.c
@@ -317,10 +317,13 @@ GNUNET_GNS_lookup_with_tld (struct GNUNET_GNS_Handle *handle,
317 * Cancel pending lookup request 317 * Cancel pending lookup request
318 * 318 *
319 * @param ltr the lookup request to cancel 319 * @param ltr the lookup request to cancel
320 * @return closure from the lookup result processor
320 */ 321 */
321void 322void *
322GNUNET_GNS_lookup_with_tld_cancel (struct GNUNET_GNS_LookupWithTldRequest *ltr) 323GNUNET_GNS_lookup_with_tld_cancel (struct GNUNET_GNS_LookupWithTldRequest *ltr)
323{ 324{
325 void *ret = ltr->lookup_proc_cls;
326
324 if (NULL != ltr->id_op) 327 if (NULL != ltr->id_op)
325 { 328 {
326 GNUNET_IDENTITY_ego_lookup_cancel (ltr->id_op); 329 GNUNET_IDENTITY_ego_lookup_cancel (ltr->id_op);
@@ -333,6 +336,7 @@ GNUNET_GNS_lookup_with_tld_cancel (struct GNUNET_GNS_LookupWithTldRequest *ltr)
333 } 336 }
334 GNUNET_free (ltr->name); 337 GNUNET_free (ltr->name);
335 GNUNET_free (ltr); 338 GNUNET_free (ltr);
339 return ret;
336} 340}
337 341
338/* end of gns_tld_api.c */ 342/* end of gns_tld_api.c */
diff --git a/src/gns/gnunet-gns-proxy.c b/src/gns/gnunet-gns-proxy.c
index 9a405c49b..d66f5c658 100644
--- a/src/gns/gnunet-gns-proxy.c
+++ b/src/gns/gnunet-gns-proxy.c
@@ -1,6 +1,6 @@
1/* 1/*
2 This file is part of GNUnet. 2 This file is part of GNUnet.
3 Copyright (C) 2012-2014 GNUnet e.V. 3 Copyright (C) 2012-2018 GNUnet e.V.
4 4
5 GNUnet is free software: you can redistribute it and/or modify it 5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published 6 under the terms of the GNU Affero General Public License as published
@@ -46,14 +46,6 @@
46#include "gns.h" 46#include "gns.h"
47 47
48 48
49/**
50 * FIXME: GnuTLS right now sometimes rejects valid certs, so as a
51 * VERY temporary workaround we just WARN the user instead of
52 * dropping the page. THIS SHOULD NOT BE USED IN PRODUCTION,
53 * set to 1 in production!!! FIXME!!!
54 */
55#define FIXED_CERT_VALIDATION_BUG 0
56
57 49
58/** 50/**
59 * Default Socks5 listen port. 51 * Default Socks5 listen port.
@@ -1079,10 +1071,8 @@ check_ssl_certificate (struct Socks5Request *s5r)
1079 certdn, 1071 certdn,
1080 name, 1072 name,
1081 rc); 1073 rc);
1082#if FIXED_CERT_VALIDATION_BUG
1083 gnutls_x509_crt_deinit (x509_cert); 1074 gnutls_x509_crt_deinit (x509_cert);
1084 return GNUNET_SYSERR; 1075 return GNUNET_SYSERR;
1085#endif
1086 } 1076 }
1087 } 1077 }
1088 else 1078 else
@@ -1197,6 +1187,15 @@ curl_check_hdr (void *buffer,
1197 s5r->domain); 1187 s5r->domain);
1198 continue; 1188 continue;
1199 } 1189 }
1190 else if ( ('.' == cookie_domain[0]) &&
1191 (0 == strcmp (&cookie_domain[1],
1192 s5r->leho)) )
1193 {
1194 offset += sprintf (new_cookie_hdr + offset,
1195 " domain=.%s;",
1196 s5r->domain);
1197 continue;
1198 }
1200 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, 1199 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
1201 _("Cookie domain `%s' supplied by server is invalid\n"), 1200 _("Cookie domain `%s' supplied by server is invalid\n"),
1202 tok); 1201 tok);
@@ -1723,12 +1722,6 @@ con_val_iter (void *cls,
1723 key)) && 1722 key)) &&
1724 (NULL != s5r->leho) ) 1723 (NULL != s5r->leho) )
1725 value = s5r->leho; 1724 value = s5r->leho;
1726 if (0 == strcasecmp (MHD_HTTP_HEADER_CONTENT_LENGTH,
1727 key))
1728 return MHD_YES;
1729 if (0 == strcasecmp (MHD_HTTP_HEADER_ACCEPT_ENCODING,
1730 key))
1731 return MHD_YES;
1732 GNUNET_asprintf (&hdr, 1725 GNUNET_asprintf (&hdr,
1733 "%s: %s", 1726 "%s: %s",
1734 key, 1727 key,
@@ -1955,7 +1948,7 @@ create_response (void *cls,
1955 s5r); 1948 s5r);
1956 { 1949 {
1957 const char *us; 1950 const char *us;
1958 long upload_size; 1951 long upload_size = 0;
1959 1952
1960 us = MHD_lookup_connection_value (con, 1953 us = MHD_lookup_connection_value (con,
1961 MHD_HEADER_KIND, 1954 MHD_HEADER_KIND,
@@ -1996,7 +1989,8 @@ create_response (void *cls,
1996 us = MHD_lookup_connection_value (con, 1989 us = MHD_lookup_connection_value (con,
1997 MHD_HEADER_KIND, 1990 MHD_HEADER_KIND,
1998 MHD_HTTP_HEADER_CONTENT_LENGTH); 1991 MHD_HTTP_HEADER_CONTENT_LENGTH);
1999 if ( (NULL != us) && (1 == sscanf (us, 1992 if ( (NULL != us) &&
1993 (1 == sscanf (us,
2000 "%ld", 1994 "%ld",
2001 &upload_size)) && 1995 &upload_size)) &&
2002 (upload_size >= 0) ) 1996 (upload_size >= 0) )
@@ -2026,20 +2020,41 @@ create_response (void *cls,
2026 curl_easy_setopt (s5r->curl, 2020 curl_easy_setopt (s5r->curl,
2027 CURLOPT_CUSTOMREQUEST, 2021 CURLOPT_CUSTOMREQUEST,
2028 "OPTIONS"); 2022 "OPTIONS");
2023 curl_easy_setopt (s5r->curl,
2024 CURLOPT_WRITEFUNCTION,
2025 &curl_download_cb);
2026 curl_easy_setopt (s5r->curl,
2027 CURLOPT_WRITEDATA,
2028 s5r);
2029
2029 } 2030 }
2030 else if (0 == strcasecmp (meth, 2031 else if (0 == strcasecmp (meth,
2031 MHD_HTTP_METHOD_GET)) 2032 MHD_HTTP_METHOD_GET))
2032 { 2033 {
2033 s5r->state = SOCKS5_SOCKET_DOWNLOAD_STARTED; 2034 s5r->state = SOCKS5_SOCKET_DOWNLOAD_STARTED;
2034 curl_easy_setopt (s5r->curl, 2035 curl_easy_setopt (s5r->curl,
2035 CURLOPT_HTTPGET, 2036 CURLOPT_HTTPGET,
2036 1L); 2037 1L);
2037 curl_easy_setopt (s5r->curl, 2038 curl_easy_setopt (s5r->curl,
2038 CURLOPT_WRITEFUNCTION, 2039 CURLOPT_WRITEFUNCTION,
2039 &curl_download_cb); 2040 &curl_download_cb);
2040 curl_easy_setopt (s5r->curl, 2041 curl_easy_setopt (s5r->curl,
2041 CURLOPT_WRITEDATA, 2042 CURLOPT_WRITEDATA,
2042 s5r); 2043 s5r);
2044 }
2045 else if (0 == strcasecmp (meth,
2046 MHD_HTTP_METHOD_DELETE))
2047 {
2048 s5r->state = SOCKS5_SOCKET_DOWNLOAD_STARTED;
2049 curl_easy_setopt (s5r->curl,
2050 CURLOPT_CUSTOMREQUEST,
2051 "DELETE");
2052 curl_easy_setopt (s5r->curl,
2053 CURLOPT_WRITEFUNCTION,
2054 &curl_download_cb);
2055 curl_easy_setopt (s5r->curl,
2056 CURLOPT_WRITEDATA,
2057 s5r);
2043 } 2058 }
2044 else 2059 else
2045 { 2060 {
@@ -2054,46 +2069,46 @@ create_response (void *cls,
2054 if (0 == strcasecmp (ver, MHD_HTTP_VERSION_1_0)) 2069 if (0 == strcasecmp (ver, MHD_HTTP_VERSION_1_0))
2055 { 2070 {
2056 curl_easy_setopt (s5r->curl, 2071 curl_easy_setopt (s5r->curl,
2057 CURLOPT_HTTP_VERSION, 2072 CURLOPT_HTTP_VERSION,
2058 CURL_HTTP_VERSION_1_0); 2073 CURL_HTTP_VERSION_1_0);
2059 } 2074 }
2060 else if (0 == strcasecmp (ver, MHD_HTTP_VERSION_1_1)) 2075 else if (0 == strcasecmp (ver, MHD_HTTP_VERSION_1_1))
2061 { 2076 {
2062 curl_easy_setopt (s5r->curl, 2077 curl_easy_setopt (s5r->curl,
2063 CURLOPT_HTTP_VERSION, 2078 CURLOPT_HTTP_VERSION,
2064 CURL_HTTP_VERSION_1_1); 2079 CURL_HTTP_VERSION_1_1);
2065 } 2080 }
2066 else 2081 else
2067 { 2082 {
2068 curl_easy_setopt (s5r->curl, 2083 curl_easy_setopt (s5r->curl,
2069 CURLOPT_HTTP_VERSION, 2084 CURLOPT_HTTP_VERSION,
2070 CURL_HTTP_VERSION_NONE); 2085 CURL_HTTP_VERSION_NONE);
2071 } 2086 }
2072 2087
2073 if (HTTPS_PORT == s5r->port) 2088 if (HTTPS_PORT == s5r->port)
2074 { 2089 {
2075 curl_easy_setopt (s5r->curl, 2090 curl_easy_setopt (s5r->curl,
2076 CURLOPT_USE_SSL, 2091 CURLOPT_USE_SSL,
2077 CURLUSESSL_ALL); 2092 CURLUSESSL_ALL);
2078 if (NULL != s5r->dane_data) 2093 if (NULL != s5r->dane_data)
2079 curl_easy_setopt (s5r->curl, 2094 curl_easy_setopt (s5r->curl,
2080 CURLOPT_SSL_VERIFYPEER, 2095 CURLOPT_SSL_VERIFYPEER,
2081 0L); 2096 0L);
2082 else 2097 else
2083 curl_easy_setopt (s5r->curl, 2098 curl_easy_setopt (s5r->curl,
2084 CURLOPT_SSL_VERIFYPEER, 2099 CURLOPT_SSL_VERIFYPEER,
2085 1L); 2100 1L);
2086 /* Disable cURL checking the hostname, as we will check ourselves 2101 /* Disable cURL checking the hostname, as we will check ourselves
2087 as only we have the domain name or the LEHO or the DANE record */ 2102 as only we have the domain name or the LEHO or the DANE record */
2088 curl_easy_setopt (s5r->curl, 2103 curl_easy_setopt (s5r->curl,
2089 CURLOPT_SSL_VERIFYHOST, 2104 CURLOPT_SSL_VERIFYHOST,
2090 0L); 2105 0L);
2091 } 2106 }
2092 else 2107 else
2093 { 2108 {
2094 curl_easy_setopt (s5r->curl, 2109 curl_easy_setopt (s5r->curl,
2095 CURLOPT_USE_SSL, 2110 CURLOPT_USE_SSL,
2096 CURLUSESSL_NONE); 2111 CURLUSESSL_NONE);
2097 } 2112 }
2098 2113
2099 if (CURLM_OK != 2114 if (CURLM_OK !=
@@ -2121,14 +2136,14 @@ create_response (void *cls,
2121 { 2136 {
2122 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 2137 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2123 "Processing %u bytes UPLOAD\n", 2138 "Processing %u bytes UPLOAD\n",
2124 (unsigned int) *upload_data_size); 2139 (unsigned int) *upload_data_size);
2125 2140
2126 /* FIXME: This must be set or a header with Transfer-Encoding: chunked. Else 2141 /* FIXME: This must be set or a header with Transfer-Encoding: chunked. Else
2127 * upload callback is not called! 2142 * upload callback is not called!
2128 */ 2143 */
2129 curl_easy_setopt (s5r->curl, 2144 curl_easy_setopt (s5r->curl,
2130 CURLOPT_POSTFIELDSIZE, 2145 CURLOPT_POSTFIELDSIZE,
2131 *upload_data_size); 2146 *upload_data_size);
2132 2147
2133 left = GNUNET_MIN (*upload_data_size, 2148 left = GNUNET_MIN (*upload_data_size,
2134 sizeof (s5r->io_buf) - s5r->io_len); 2149 sizeof (s5r->io_buf) - s5r->io_len);
@@ -2142,7 +2157,7 @@ create_response (void *cls,
2142 { 2157 {
2143 s5r->curl_paused = GNUNET_NO; 2158 s5r->curl_paused = GNUNET_NO;
2144 curl_easy_pause (s5r->curl, 2159 curl_easy_pause (s5r->curl,
2145 CURLPAUSE_CONT); 2160 CURLPAUSE_CONT);
2146 } 2161 }
2147 return MHD_YES; 2162 return MHD_YES;
2148 } 2163 }
@@ -2522,9 +2537,9 @@ load_file (const char* filename,
2522 2537
2523 if (GNUNET_OK != 2538 if (GNUNET_OK !=
2524 GNUNET_DISK_file_size (filename, 2539 GNUNET_DISK_file_size (filename,
2525 &fsize, 2540 &fsize,
2526 GNUNET_YES, 2541 GNUNET_YES,
2527 GNUNET_YES)) 2542 GNUNET_YES))
2528 return NULL; 2543 return NULL;
2529 if (fsize > MAX_PEM_SIZE) 2544 if (fsize > MAX_PEM_SIZE)
2530 return NULL; 2545 return NULL;
@@ -2557,7 +2572,7 @@ load_key_from_file (gnutls_x509_privkey_t key,
2557 int ret; 2572 int ret;
2558 2573
2559 key_data.data = load_file (keyfile, 2574 key_data.data = load_file (keyfile,
2560 &key_data.size); 2575 &key_data.size);
2561 if (NULL == key_data.data) 2576 if (NULL == key_data.data)
2562 return GNUNET_SYSERR; 2577 return GNUNET_SYSERR;
2563 ret = gnutls_x509_privkey_import (key, &key_data, 2578 ret = gnutls_x509_privkey_import (key, &key_data,
@@ -2588,17 +2603,17 @@ load_cert_from_file (gnutls_x509_crt_t crt,
2588 int ret; 2603 int ret;
2589 2604
2590 cert_data.data = load_file (certfile, 2605 cert_data.data = load_file (certfile,
2591 &cert_data.size); 2606 &cert_data.size);
2592 if (NULL == cert_data.data) 2607 if (NULL == cert_data.data)
2593 return GNUNET_SYSERR; 2608 return GNUNET_SYSERR;
2594 ret = gnutls_x509_crt_import (crt, 2609 ret = gnutls_x509_crt_import (crt,
2595 &cert_data, 2610 &cert_data,
2596 GNUTLS_X509_FMT_PEM); 2611 GNUTLS_X509_FMT_PEM);
2597 if (GNUTLS_E_SUCCESS != ret) 2612 if (GNUTLS_E_SUCCESS != ret)
2598 { 2613 {
2599 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 2614 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
2600 _("Unable to import certificate from `%s'\n"), 2615 _("Unable to import certificate from `%s'\n"),
2601 certfile); 2616 certfile);
2602 } 2617 }
2603 GNUNET_free_non_null (cert_data.data); 2618 GNUNET_free_non_null (cert_data.data);
2604 return (GNUTLS_E_SUCCESS != ret) ? GNUNET_SYSERR : GNUNET_OK; 2619 return (GNUTLS_E_SUCCESS != ret) ? GNUNET_SYSERR : GNUNET_OK;
@@ -2629,26 +2644,26 @@ generate_gns_certificate (const char *name)
2629 GNUNET_break (GNUTLS_E_SUCCESS == gnutls_x509_crt_set_key (request, proxy_ca.key)); 2644 GNUNET_break (GNUTLS_E_SUCCESS == gnutls_x509_crt_set_key (request, proxy_ca.key));
2630 pgc = GNUNET_new (struct ProxyGNSCertificate); 2645 pgc = GNUNET_new (struct ProxyGNSCertificate);
2631 gnutls_x509_crt_set_dn_by_oid (request, 2646 gnutls_x509_crt_set_dn_by_oid (request,
2632 GNUTLS_OID_X520_COUNTRY_NAME, 2647 GNUTLS_OID_X520_COUNTRY_NAME,
2633 0, 2648 0,
2634 "ZZ", 2649 "ZZ",
2635 strlen ("ZZ")); 2650 strlen ("ZZ"));
2636 gnutls_x509_crt_set_dn_by_oid (request, 2651 gnutls_x509_crt_set_dn_by_oid (request,
2637 GNUTLS_OID_X520_ORGANIZATION_NAME, 2652 GNUTLS_OID_X520_ORGANIZATION_NAME,
2638 0, 2653 0,
2639 "GNU Name System", 2654 "GNU Name System",
2640 strlen ("GNU Name System")); 2655 strlen ("GNU Name System"));
2641 gnutls_x509_crt_set_dn_by_oid (request, 2656 gnutls_x509_crt_set_dn_by_oid (request,
2642 GNUTLS_OID_X520_COMMON_NAME, 2657 GNUTLS_OID_X520_COMMON_NAME,
2643 0, 2658 0,
2644 name, 2659 name,
2645 strlen (name)); 2660 strlen (name));
2646 GNUNET_break (GNUTLS_E_SUCCESS == 2661 GNUNET_break (GNUTLS_E_SUCCESS ==
2647 gnutls_x509_crt_set_version (request, 2662 gnutls_x509_crt_set_version (request,
2648 3)); 2663 3));
2649 gnutls_rnd (GNUTLS_RND_NONCE, 2664 gnutls_rnd (GNUTLS_RND_NONCE,
2650 &serial, 2665 &serial,
2651 sizeof (serial)); 2666 sizeof (serial));
2652 gnutls_x509_crt_set_serial (request, 2667 gnutls_x509_crt_set_serial (request,
2653 &serial, 2668 &serial,
2654 sizeof (serial)); 2669 sizeof (serial));
@@ -2663,20 +2678,20 @@ generate_gns_certificate (const char *name)
2663 gnutls_x509_crt_set_expiration_time (request, 2678 gnutls_x509_crt_set_expiration_time (request,
2664 etime); 2679 etime);
2665 gnutls_x509_crt_sign2 (request, 2680 gnutls_x509_crt_sign2 (request,
2666 proxy_ca.cert, 2681 proxy_ca.cert,
2667 proxy_ca.key, 2682 proxy_ca.key,
2668 GNUTLS_DIG_SHA512, 2683 GNUTLS_DIG_SHA512,
2669 0); 2684 0);
2670 key_buf_size = sizeof (pgc->key); 2685 key_buf_size = sizeof (pgc->key);
2671 cert_buf_size = sizeof (pgc->cert); 2686 cert_buf_size = sizeof (pgc->cert);
2672 gnutls_x509_crt_export (request, 2687 gnutls_x509_crt_export (request,
2673 GNUTLS_X509_FMT_PEM, 2688 GNUTLS_X509_FMT_PEM,
2674 pgc->cert, 2689 pgc->cert,
2675 &cert_buf_size); 2690 &cert_buf_size);
2676 gnutls_x509_privkey_export (proxy_ca.key, 2691 gnutls_x509_privkey_export (proxy_ca.key,
2677 GNUTLS_X509_FMT_PEM, 2692 GNUTLS_X509_FMT_PEM,
2678 pgc->key, 2693 pgc->key,
2679 &key_buf_size); 2694 &key_buf_size);
2680 gnutls_x509_crt_deinit (request); 2695 gnutls_x509_crt_deinit (request);
2681 return pgc; 2696 return pgc;
2682} 2697}
@@ -3120,7 +3135,7 @@ do_s5r_read (void *cls)
3120 tc = GNUNET_SCHEDULER_get_task_context (); 3135 tc = GNUNET_SCHEDULER_get_task_context ();
3121 if ( (NULL != tc->read_ready) && 3136 if ( (NULL != tc->read_ready) &&
3122 (GNUNET_NETWORK_fdset_isset (tc->read_ready, 3137 (GNUNET_NETWORK_fdset_isset (tc->read_ready,
3123 s5r->sock)) ) 3138 s5r->sock)) )
3124 { 3139 {
3125 rlen = GNUNET_NETWORK_socket_recv (s5r->sock, 3140 rlen = GNUNET_NETWORK_socket_recv (s5r->sock,
3126 &s5r->rbuf[s5r->rbuf_len], 3141 &s5r->rbuf[s5r->rbuf_len],
@@ -3247,7 +3262,7 @@ do_s5r_read (void *cls)
3247 *dom_len); 3262 *dom_len);
3248 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 3263 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
3249 "Requested connection is to http%s://%s:%d\n", 3264 "Requested connection is to http%s://%s:%d\n",
3250 (HTTPS_PORT == s5r->port) ? "s" : "", 3265 (HTTPS_PORT == s5r->port) ? "s" : "",
3251 s5r->domain, 3266 s5r->domain,
3252 ntohs (*port)); 3267 ntohs (*port));
3253 s5r->state = SOCKS5_RESOLVING; 3268 s5r->state = SOCKS5_RESOLVING;
@@ -3319,21 +3334,21 @@ do_accept (void *cls)
3319 ltask4 = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL, 3334 ltask4 = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL,
3320 lsock, 3335 lsock,
3321 &do_accept, 3336 &do_accept,
3322 lsock); 3337 lsock);
3323 else if (lsock == lsock6) 3338 else if (lsock == lsock6)
3324 ltask6 = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL, 3339 ltask6 = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL,
3325 lsock, 3340 lsock,
3326 &do_accept, 3341 &do_accept,
3327 lsock); 3342 lsock);
3328 else 3343 else
3329 GNUNET_assert (0); 3344 GNUNET_assert (0);
3330 s = GNUNET_NETWORK_socket_accept (lsock, 3345 s = GNUNET_NETWORK_socket_accept (lsock,
3331 NULL, 3346 NULL,
3332 NULL); 3347 NULL);
3333 if (NULL == s) 3348 if (NULL == s)
3334 { 3349 {
3335 GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, 3350 GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR,
3336 "accept"); 3351 "accept");
3337 return; 3352 return;
3338 } 3353 }
3339 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 3354 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
@@ -3347,7 +3362,7 @@ do_accept (void *cls)
3347 s5r->rtask = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL, 3362 s5r->rtask = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL,
3348 s5r->sock, 3363 s5r->sock,
3349 &do_s5r_read, 3364 &do_s5r_read,
3350 s5r); 3365 s5r);
3351} 3366}
3352 3367
3353 3368
@@ -3445,7 +3460,7 @@ bind_v4 ()
3445 return NULL; 3460 return NULL;
3446 if (GNUNET_OK != 3461 if (GNUNET_OK !=
3447 GNUNET_NETWORK_socket_bind (ls, 3462 GNUNET_NETWORK_socket_bind (ls,
3448 (const struct sockaddr *) &sa4, 3463 (const struct sockaddr *) &sa4,
3449 sizeof (sa4))) 3464 sizeof (sa4)))
3450 { 3465 {
3451 eno = errno; 3466 eno = errno;
@@ -3482,7 +3497,7 @@ bind_v6 ()
3482 return NULL; 3497 return NULL;
3483 if (GNUNET_OK != 3498 if (GNUNET_OK !=
3484 GNUNET_NETWORK_socket_bind (ls, 3499 GNUNET_NETWORK_socket_bind (ls,
3485 (const struct sockaddr *) &sa6, 3500 (const struct sockaddr *) &sa6,
3486 sizeof (sa6))) 3501 sizeof (sa6)))
3487 { 3502 {
3488 eno = errno; 3503 eno = errno;
@@ -3537,8 +3552,8 @@ run (void *cls,
3537 cafile = cafile_cfg; 3552 cafile = cafile_cfg;
3538 } 3553 }
3539 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 3554 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
3540 "Using `%s' as CA\n", 3555 "Using `%s' as CA\n",
3541 cafile); 3556 cafile);
3542 3557
3543 gnutls_global_init (); 3558 gnutls_global_init ();
3544 gnutls_x509_crt_init (&proxy_ca.cert); 3559 gnutls_x509_crt_init (&proxy_ca.cert);
@@ -3678,19 +3693,19 @@ main (int argc,
3678{ 3693{
3679 struct GNUNET_GETOPT_CommandLineOption options[] = { 3694 struct GNUNET_GETOPT_CommandLineOption options[] = {
3680 GNUNET_GETOPT_option_uint16 ('p', 3695 GNUNET_GETOPT_option_uint16 ('p',
3681 "port", 3696 "port",
3682 NULL, 3697 NULL,
3683 gettext_noop ("listen on specified port (default: 7777)"), 3698 gettext_noop ("listen on specified port (default: 7777)"),
3684 &port), 3699 &port),
3685 GNUNET_GETOPT_option_string ('a', 3700 GNUNET_GETOPT_option_string ('a',
3686 "authority", 3701 "authority",
3687 NULL, 3702 NULL,
3688 gettext_noop ("pem file to use as CA"), 3703 gettext_noop ("pem file to use as CA"),
3689 &cafile_opt), 3704 &cafile_opt),
3690 GNUNET_GETOPT_option_flag ('6', 3705 GNUNET_GETOPT_option_flag ('6',
3691 "disable-ivp6", 3706 "disable-ivp6",
3692 gettext_noop ("disable use of IPv6"), 3707 gettext_noop ("disable use of IPv6"),
3693 &disable_v6), 3708 &disable_v6),
3694 3709
3695 GNUNET_GETOPT_OPTION_END 3710 GNUNET_GETOPT_OPTION_END
3696 }; 3711 };
@@ -3701,7 +3716,7 @@ main (int argc,
3701 3716
3702 if (GNUNET_OK != 3717 if (GNUNET_OK !=
3703 GNUNET_STRINGS_get_utf8_args (argc, argv, 3718 GNUNET_STRINGS_get_utf8_args (argc, argv,
3704 &argc, &argv)) 3719 &argc, &argv))
3705 return 2; 3720 return 2;
3706 GNUNET_log_setup ("gnunet-gns-proxy", 3721 GNUNET_log_setup ("gnunet-gns-proxy",
3707 "WARNING", 3722 "WARNING",
diff --git a/src/gns/gnunet-service-gns_interceptor.c b/src/gns/gnunet-service-gns_interceptor.c
index ecf4d59f5..42f3e1514 100644
--- a/src/gns/gnunet-service-gns_interceptor.c
+++ b/src/gns/gnunet-service-gns_interceptor.c
@@ -103,7 +103,7 @@ reply_to_dns (void *cls, uint32_t rd_count,
103 unsigned int num_answers; 103 unsigned int num_answers;
104 unsigned int skip_answers; 104 unsigned int skip_answers;
105 unsigned int skip_additional; 105 unsigned int skip_additional;
106 size_t off; 106 size_t off = 0;
107 107
108 /* Put records in the DNS packet */ 108 /* Put records in the DNS packet */
109 num_answers = 0; 109 num_answers = 0;
diff --git a/src/gns/gnunet-service-gns_resolver.c b/src/gns/gnunet-service-gns_resolver.c
index 54c3cba23..67960ef97 100644
--- a/src/gns/gnunet-service-gns_resolver.c
+++ b/src/gns/gnunet-service-gns_resolver.c
@@ -2397,6 +2397,8 @@ handle_dht_response (void *cls,
2397 "Received expired block from the DHT, will not cache it.\n"); 2397 "Received expired block from the DHT, will not cache it.\n");
2398 return; 2398 return;
2399 } 2399 }
2400 if (GNUNET_YES == disable_cache)
2401 return;
2400 /* Cache well-formed blocks */ 2402 /* Cache well-formed blocks */
2401 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 2403 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2402 "Caching response from the DHT in namecache\n"); 2404 "Caching response from the DHT in namecache\n");
@@ -2407,7 +2409,7 @@ handle_dht_response (void *cls,
2407 co); 2409 co);
2408 GNUNET_CONTAINER_DLL_insert (co_head, 2410 GNUNET_CONTAINER_DLL_insert (co_head,
2409 co_tail, 2411 co_tail,
2410 co); 2412 co);
2411} 2413}
2412 2414
2413 2415
diff --git a/src/gns/test_gns_lookup.conf b/src/gns/test_gns_lookup.conf
index a7b842302..0d9d2b49a 100644
--- a/src/gns/test_gns_lookup.conf
+++ b/src/gns/test_gns_lookup.conf
@@ -4,14 +4,14 @@
4GNUNET_TEST_HOME = $GNUNET_TMP/test-gnunet-gns-peer-1/ 4GNUNET_TEST_HOME = $GNUNET_TMP/test-gnunet-gns-peer-1/
5 5
6[dht] 6[dht]
7AUTOSTART = YES 7START_ON_DEMAND = YES
8 8
9[transport] 9[transport]
10PLUGINS = 10PLUGINS =
11 11
12[gns] 12[gns]
13# PREFIX = valgrind --leak-check=full --track-origins=yes 13# PREFIX = valgrind --leak-check=full --track-origins=yes
14AUTOSTART = YES 14START_ON_DEMAND = YES
15AUTO_IMPORT_PKEY = YES 15AUTO_IMPORT_PKEY = YES
16MAX_PARALLEL_BACKGROUND_QUERIES = 10 16MAX_PARALLEL_BACKGROUND_QUERIES = 10
17DEFAULT_LOOKUP_TIMEOUT = 15 s 17DEFAULT_LOOKUP_TIMEOUT = 15 s
diff --git a/src/gns/test_gns_nick_shorten.conf b/src/gns/test_gns_nick_shorten.conf
index 210159fc8..317477c80 100644
--- a/src/gns/test_gns_nick_shorten.conf
+++ b/src/gns/test_gns_nick_shorten.conf
@@ -4,14 +4,14 @@
4GNUNET_TEST_HOME = $GNUNET_TMP/test-gnunet-gns-peer-1/ 4GNUNET_TEST_HOME = $GNUNET_TMP/test-gnunet-gns-peer-1/
5 5
6[dht] 6[dht]
7AUTOSTART = YES 7START_ON_DEMAND = YES
8 8
9[transport] 9[transport]
10PLUGINS = 10PLUGINS =
11 11
12[gns] 12[gns]
13#PREFIX = valgrind --leak-check=full --track-origins=yes 13#PREFIX = valgrind --leak-check=full --track-origins=yes
14AUTOSTART = YES 14START_ON_DEMAND = YES
15AUTO_IMPORT_PKEY = YES 15AUTO_IMPORT_PKEY = YES
16MAX_PARALLEL_BACKGROUND_QUERIES = 10 16MAX_PARALLEL_BACKGROUND_QUERIES = 10
17DEFAULT_LOOKUP_TIMEOUT = 15 s 17DEFAULT_LOOKUP_TIMEOUT = 15 s
diff --git a/src/gns/test_gns_proxy.conf b/src/gns/test_gns_proxy.conf
index 875c0a5e3..51edd5a0c 100644
--- a/src/gns/test_gns_proxy.conf
+++ b/src/gns/test_gns_proxy.conf
@@ -13,7 +13,7 @@ WEAKRANDOM = YES
13HOSTKEYSFILE = ${DATADIR}/testing_hostkeys.dat 13HOSTKEYSFILE = ${DATADIR}/testing_hostkeys.dat
14 14
15[gns] 15[gns]
16AUTOSTART = YES 16START_ON_DEMAND = YES
17ZONEKEY = $GNUNET_TEST_HOME/.zonekey 17ZONEKEY = $GNUNET_TEST_HOME/.zonekey
18HIJACK_DNS = YES 18HIJACK_DNS = YES
19 19
@@ -22,7 +22,7 @@ PROXY_CACERT = proxy/test_cert.pem
22PROXY_UNIXPATH = $GNUNET_RUNTIME_DIR/gnunet-gns-proxy.sock 22PROXY_UNIXPATH = $GNUNET_RUNTIME_DIR/gnunet-gns-proxy.sock
23 23
24[namestore] 24[namestore]
25AUTOSTART = YES 25START_ON_DEMAND = YES
26 26
27[dns] 27[dns]
28PROVIDE_EXIT = NO 28PROVIDE_EXIT = NO
diff --git a/src/gns/test_gns_simple_lookup.conf b/src/gns/test_gns_simple_lookup.conf
index 5bf6f8e63..374731377 100644
--- a/src/gns/test_gns_simple_lookup.conf
+++ b/src/gns/test_gns_simple_lookup.conf
@@ -1,13 +1,13 @@
1@INLINE@ test_gns_defaults.conf 1@INLINE@ test_gns_defaults.conf
2[fs] 2[fs]
3AUTOSTART = NO 3START_ON_DEMAND = NO
4 4
5[resolver] 5[resolver]
6AUTOSTART = YES 6START_ON_DEMAND = YES
7HOSTNAME = localhost 7HOSTNAME = localhost
8 8
9[dht] 9[dht]
10AUTOSTART = YES 10START_ON_DEMAND = YES
11ACCEPT_FROM6 = ::1; 11ACCEPT_FROM6 = ::1;
12ACCEPT_FROM = 127.0.0.1; 12ACCEPT_FROM = 127.0.0.1;
13HOSTNAME = localhost 13HOSTNAME = localhost
@@ -54,12 +54,12 @@ EXTERNAL_ADDRESS = 127.0.0.1
54USE_LOCALADDR = NO 54USE_LOCALADDR = NO
55 55
56[dns] 56[dns]
57AUTOSTART = YES 57START_ON_DEMAND = YES
58DNS_EXIT = 8.8.8.8 58DNS_EXIT = 8.8.8.8
59 59
60[gns] 60[gns]
61#PREFIX = valgrind --leak-check=full --track-origins=yes 61#PREFIX = valgrind --leak-check=full --track-origins=yes
62AUTOSTART = YES 62START_ON_DEMAND = YES
63BINARY = gnunet-service-gns 63BINARY = gnunet-service-gns
64ZONEKEY = zonefiles/test_zonekey 64ZONEKEY = zonefiles/test_zonekey
65PRIVATE_ZONE = private 65PRIVATE_ZONE = private
@@ -75,14 +75,14 @@ DEFAULT_LOOKUP_TIMEOUT = 15 s
75RECORD_PUT_INTERVAL = 1 h 75RECORD_PUT_INTERVAL = 1 h
76 76
77[nse] 77[nse]
78AUTOSTART = NO 78START_ON_DEMAND = NO
79 79
80[statistics] 80[statistics]
81AUTOSTART = NO 81START_ON_DEMAND = NO
82 82
83[namestore] 83[namestore]
84PORT = 22371 84PORT = 22371
85AUTOSTART = YES 85START_ON_DEMAND = YES
86UNIXPATH = $GNUNET_RUNTIME_DIR/gnunet-service-namestore-default.sock 86UNIXPATH = $GNUNET_RUNTIME_DIR/gnunet-service-namestore-default.sock
87UNIX_MATCH_UID = YES 87UNIX_MATCH_UID = YES
88UNIX_MATCH_GID = YES 88UNIX_MATCH_GID = YES