getdns_query for addresses with qname but no qtype

This commit is contained in:
Willem Toorop 2018-12-03 14:52:58 +01:00
parent 30a3a6b026
commit ea55b12a08
2 changed files with 14 additions and 0 deletions

View File

@ -1,4 +1,6 @@
* 2018-??-??: Version 1.4.3 * 2018-??-??: Version 1.4.3
* getdns_query queries for addresses when a query name
without a type is given.
* RFE #408: Fetching of trust anchors will be retried * RFE #408: Fetching of trust anchors will be retried
after failure, after a certain backoff time. The time after failure, after a certain backoff time. The time
can be configured with can be configured with

View File

@ -581,11 +581,15 @@ getdns_return_t parse_args(int argc, char **argv)
size_t upstream_count = 0; size_t upstream_count = 0;
FILE *fh; FILE *fh;
int int_value; int int_value;
int got_rrtype = 0;
int got_calltype = 0;
int got_qname = 0;
for (i = 1; i < argc; i++) { for (i = 1; i < argc; i++) {
arg = argv[i]; arg = argv[i];
if ((t = get_rrtype(arg)) >= 0) { if ((t = get_rrtype(arg)) >= 0) {
request_type = t; request_type = t;
got_rrtype = 1;
continue; continue;
} else if (arg[0] == '+') { } else if (arg[0] == '+') {
@ -654,6 +658,7 @@ getdns_return_t parse_args(int argc, char **argv)
continue; continue;
} else if (arg[0] != '-') { } else if (arg[0] != '-') {
got_qname = 1;
name = arg; name = arg;
continue; continue;
} }
@ -667,6 +672,7 @@ getdns_return_t parse_args(int argc, char **argv)
break; break;
case 'A': case 'A':
calltype = ADDRESS; calltype = ADDRESS;
got_calltype = 1;
break; break;
case 'b': case 'b':
if (c[1] != 0 || ++i >= argc || !*argv[i]) { if (c[1] != 0 || ++i >= argc || !*argv[i]) {
@ -740,9 +746,11 @@ getdns_return_t parse_args(int argc, char **argv)
break; break;
case 'G': case 'G':
calltype = GENERAL; calltype = GENERAL;
got_calltype = 1;
break; break;
case 'H': case 'H':
calltype = HOSTNAME; calltype = HOSTNAME;
got_calltype = 1;
break; break;
case 'h': case 'h':
print_usage(stdout, argv[0]); print_usage(stdout, argv[0]);
@ -871,6 +879,7 @@ getdns_return_t parse_args(int argc, char **argv)
break; break;
case 'S': case 'S':
calltype = SERVICE; calltype = SERVICE;
got_calltype = 1;
break; break;
case 't': case 't':
if (c[1] != 0 || ++i >= argc || !*argv[i]) { if (c[1] != 0 || ++i >= argc || !*argv[i]) {
@ -1094,6 +1103,9 @@ getdns_return_t parse_args(int argc, char **argv)
} }
next: ; next: ;
} }
if (!got_calltype && !got_rrtype && got_qname) {
calltype = ADDRESS;
}
if (r) if (r)
return r; return r;
if (pubkey_pinset && upstream_count) { if (pubkey_pinset && upstream_count) {