diff options
-rw-r--r-- | docs/cmdline-opts/Makefile.inc | 2 | ||||
-rw-r--r-- | docs/cmdline-opts/doh-url.d | 9 | ||||
-rw-r--r-- | src/tool_cfgable.c | 1 | ||||
-rw-r--r-- | src/tool_cfgable.h | 1 | ||||
-rw-r--r-- | src/tool_getparam.c | 4 | ||||
-rw-r--r-- | src/tool_help.c | 2 | ||||
-rw-r--r-- | src/tool_operate.c | 3 |
7 files changed, 21 insertions, 1 deletions
diff --git a/docs/cmdline-opts/Makefile.inc b/docs/cmdline-opts/Makefile.inc index fe5fb5baf..76fa5d45f 100644 --- a/docs/cmdline-opts/Makefile.inc +++ b/docs/cmdline-opts/Makefile.inc @@ -2,7 +2,7 @@ DPAGES = abstract-unix-socket.d anyauth.d append.d basic.d cacert.d capath.d cert.d \ cert-status.d cert-type.d ciphers.d compressed.d compressed-ssh.d \ - config.d \ + config.d doh-url.d \ connect-timeout.d connect-to.d continue-at.d cookie.d cookie-jar.d \ create-dirs.d crlf.d crlfile.d data-ascii.d data-binary.d data.d \ data-raw.d data-urlencode.d delegation.d digest.d disable.d \ diff --git a/docs/cmdline-opts/doh-url.d b/docs/cmdline-opts/doh-url.d new file mode 100644 index 000000000..8fa42c1b2 --- /dev/null +++ b/docs/cmdline-opts/doh-url.d @@ -0,0 +1,9 @@ +Long: doh-url +Arg: <URL> +Help: Resolve host names over DOH +Protocols: all +--- +Specifies which DNS-over-HTTPS (DOH) server to use to resolve hostnames, +instead of using the default name resolver mechanism. The URL must be HTTPS. + +If this option is used several times, the last one will be used. diff --git a/src/tool_cfgable.c b/src/tool_cfgable.c index 81e16c1c8..7d088ae0f 100644 --- a/src/tool_cfgable.c +++ b/src/tool_cfgable.c @@ -102,6 +102,7 @@ static void free_config_fields(struct OperationConfig *config) config->url_get = NULL; config->url_out = NULL; + Curl_safefree(config->doh_url); Curl_safefree(config->cipher_list); Curl_safefree(config->proxy_cipher_list); Curl_safefree(config->cert); diff --git a/src/tool_cfgable.h b/src/tool_cfgable.h index a0363e9a7..b719fa219 100644 --- a/src/tool_cfgable.h +++ b/src/tool_cfgable.h @@ -115,6 +115,7 @@ struct OperationConfig { struct getout *url_get; /* point to the node to fill in URL */ struct getout *url_out; /* point to the node to fill in outfile */ struct getout *url_ul; /* point to the node to fill in upload */ + char *doh_url; char *cipher_list; char *proxy_cipher_list; char *cipher13_list; diff --git a/src/tool_getparam.c b/src/tool_getparam.c index aad147148..58f3f5827 100644 --- a/src/tool_getparam.c +++ b/src/tool_getparam.c @@ -80,6 +80,7 @@ static const struct LongShort aliases[]= { {"*b", "egd-file", ARG_STRING}, {"*B", "oauth2-bearer", ARG_STRING}, {"*c", "connect-timeout", ARG_STRING}, + {"*C", "doh-url" , ARG_STRING}, {"*d", "ciphers", ARG_STRING}, {"*D", "dns-interface", ARG_STRING}, {"*e", "disable-epsv", ARG_BOOL}, @@ -619,6 +620,9 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */ if(err) return err; break; + case 'C': /* doh-url */ + GetStr(&config->doh_url, nextarg); + break; case 'd': /* ciphers */ GetStr(&config->cipher_list, nextarg); break; diff --git a/src/tool_help.c b/src/tool_help.c index b829e76ef..5b04ea203 100644 --- a/src/tool_help.c +++ b/src/tool_help.c @@ -118,6 +118,8 @@ static const struct helptxt helptext[] = { "IPv6 address to use for DNS requests"}, {" --dns-servers <addresses>", "DNS server addrs to use"}, + {" --doh-url <URL>", + "Resolve host names over DOH"}, {"-D, --dump-header <filename>", "Write the received headers to <filename>"}, {" --egd-file <file>", diff --git a/src/tool_operate.c b/src/tool_operate.c index 2c3f6dd4c..5a72b6a8c 100644 --- a/src/tool_operate.c +++ b/src/tool_operate.c @@ -1262,6 +1262,9 @@ static CURLcode operate_do(struct GlobalConfig *global, my_setopt(curl, CURLOPT_CONNECTTIMEOUT_MS, (long)(config->connecttimeout * 1000)); + if(config->doh_url) + my_setopt_str(curl, CURLOPT_DOH_URL, config->doh_url); + if(config->cipher_list) my_setopt_str(curl, CURLOPT_SSL_CIPHER_LIST, config->cipher_list); |