Add the ability to display the BADCOOKIE message in dig when
+badcookie is in effect.
This commit is contained in:
@@ -282,6 +282,7 @@ help(void) {
|
||||
"short\n"
|
||||
" form of answers - global "
|
||||
"option)\n"
|
||||
" +[no]showbadcookie (Show BADCOOKIE message)\n"
|
||||
" +[no]showsearch (Search with intermediate "
|
||||
"results)\n"
|
||||
" +[no]split=## (Split hex/base64 fields "
|
||||
@@ -1795,10 +1796,20 @@ plus_option(char *option, bool is_batchfile, bool *need_clone,
|
||||
}
|
||||
break;
|
||||
case 'w': /* showsearch */
|
||||
FULLCHECK("showsearch");
|
||||
if (!lookup->trace) {
|
||||
showsearch = state;
|
||||
usesearch = state;
|
||||
switch (cmd[4]) {
|
||||
case 'b':
|
||||
FULLCHECK("showbadcookie");
|
||||
lookup->showbadcookie = state;
|
||||
break;
|
||||
case 's':
|
||||
FULLCHECK("showsearch");
|
||||
if (!lookup->trace) {
|
||||
showsearch = state;
|
||||
usesearch = state;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
goto invalid_option;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -503,6 +503,11 @@ abbreviation is unambiguous; for example, ``+cd`` is equivalent to
|
||||
form. This option always has a global effect; it cannot be set globally and
|
||||
then overridden on a per-lookup basis.
|
||||
|
||||
``+[no]showbadcookie``
|
||||
This option toggles whether to show the message containing the
|
||||
BADCOOKIE rcode before retrying the request or not. The default
|
||||
is to not show the messages.
|
||||
|
||||
``+[no]showsearch``
|
||||
This option performs [or does not perform] a search showing intermediate results.
|
||||
|
||||
|
||||
@@ -735,6 +735,8 @@ clone_lookup(dig_lookup_t *lookold, bool servers) {
|
||||
}
|
||||
looknew->https_get = lookold->https_get;
|
||||
looknew->http_plain = lookold->http_plain;
|
||||
|
||||
looknew->showbadcookie = lookold->showbadcookie;
|
||||
looknew->sendcookie = lookold->sendcookie;
|
||||
looknew->seenbadcookie = lookold->seenbadcookie;
|
||||
looknew->badcookie = lookold->badcookie;
|
||||
@@ -3852,6 +3854,11 @@ recv_done(isc_nmhandle_t *handle, isc_result_t eresult, isc_region_t *region,
|
||||
{
|
||||
process_opt(l, msg);
|
||||
if (msg->cc_ok) {
|
||||
if (l->showbadcookie) {
|
||||
dighost_printmessage(query, &b, msg, true);
|
||||
dighost_received(isc_buffer_usedlength(&b),
|
||||
&peer, query);
|
||||
}
|
||||
dighost_comments(l, "BADCOOKIE, retrying%s.",
|
||||
l->seenbadcookie ? " in TCP mode"
|
||||
: "");
|
||||
|
||||
@@ -120,9 +120,9 @@ struct dig_lookup {
|
||||
section_answer, section_authority, section_question,
|
||||
seenbadcookie, sendcookie, servfail_stops,
|
||||
setqid, /*% use a speciied query ID */
|
||||
stats, tcflag, tcp_keepalive, tcp_mode, tcp_mode_set,
|
||||
tls_mode, /*% connect using TLS */
|
||||
trace, /*% dig +trace */
|
||||
showbadcookie, stats, tcflag, tcp_keepalive, tcp_mode,
|
||||
tcp_mode_set, tls_mode, /*% connect using TLS */
|
||||
trace, /*% dig +trace */
|
||||
trace_root, /*% initial query for either +trace or +nssearch */
|
||||
ttlunits, use_usec, waiting_connect, zflag;
|
||||
char textname[MXNAME]; /*% Name we're going to be looking up */
|
||||
|
||||
@@ -515,6 +515,11 @@ This option toggles whether a terse answer is provided. The default is to print
|
||||
form. This option always has a global effect; it cannot be set globally and
|
||||
then overridden on a per\-lookup basis.
|
||||
.TP
|
||||
.B \fB+[no]showbadcookie\fP
|
||||
This option toggles whether to show the message containing the
|
||||
BADCOOKIE rcode before retrying the request or not. The default
|
||||
is to not show the messages.
|
||||
.TP
|
||||
.B \fB+[no]showsearch\fP
|
||||
This option performs [or does not perform] a search showing intermediate results.
|
||||
.TP
|
||||
|
||||
Reference in New Issue
Block a user