The check_if_done() function can pass control back out to
dighost_shutdown() (which is part of dig.c, host.c, or nslookup.c),
and calling that twice can cause unexpected problems, if it is not
designed to be idempotent.
Since cancel_lookup() calls check_if_done() implicitly, don't call
check_if_done() again when 'next' is NULL.
if (next != NULL) {
start_udp(next);
+ check_if_done();
} else {
clear_current_lookup();
}
- check_if_done();
return;
}
if (next != NULL) {
start_tcp(next);
+ check_if_done();
} else {
clear_current_lookup();
}
- check_if_done();
return;
}