From: Evan Hunt Date: Fri, 8 Apr 2022 07:33:24 +0000 (-0700) Subject: ensure dig sets exitcode after local UDP connection failure X-Git-Tag: v9.19.1~72^2~1 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=4eee6460ff38dd268576d998b2eeed807d3d6f10;p=thirdparty%2Fbind9.git ensure dig sets exitcode after local UDP connection failure dig previously set an exit code of 9 when a TCP connection failed or when a UDP connection timed out, but when the server address is localhost it's possible for a UDP query to fail with ISC_R_CONNREFUSED. that code path didn't update the exit code, causing dig to exit with status 0. we now set the exit code to 9 in this failure case. --- diff --git a/bin/dig/dighost.c b/bin/dig/dighost.c index 0b3a66a5c01..a4c2865509d 100644 --- a/bin/dig/dighost.c +++ b/bin/dig/dighost.c @@ -3120,6 +3120,10 @@ udp_ready(isc_nmhandle_t *handle, isc_result_t eresult, void *arg) { dig_lookup_t *l = query->lookup; debug("udp setup failed: %s", isc_result_totext(eresult)); + + if (exitcode < 9) { + exitcode = 9; + } query_detach(&query); cancel_lookup(l); lookup_detach(&l); @@ -3980,6 +3984,8 @@ recv_done(isc_nmhandle_t *handle, isc_result_t eresult, isc_region_t *region, if (eresult == ISC_R_EOF) { requeue_or_update_exitcode(l); + } else if (exitcode < 9) { + exitcode = 9; } goto cancel_lookup;