From: Ondřej Surý Date: Wed, 12 Oct 2022 12:40:49 +0000 (+0200) Subject: Ignore additional return codes in the netmgr unit tests X-Git-Tag: v9.19.7~71^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ac4cc8443dddc8e900188b4beae54c7ca222094c;p=thirdparty%2Fbind9.git Ignore additional return codes in the netmgr unit tests There was inconsistency in which error codes would get accepted and ignored in the network manager unit test callbacks. Add following results, so we just detach the handle instead of causing assertion failure: * ISC_R_SHUTTINGDOWN - when the network manager is shutting down * ISC_R_CANCELED - the socket has been shut down * ISC_R_EOF - the (TCP) communication has ended on the other side * ISC_R_CONNECTIONRESET - the TCP connection was reset This should fix some of the spurious unit test failures. --- diff --git a/tests/isc/netmgr_common.c b/tests/isc/netmgr_common.c index f77ed5d7613..e92a59bad54 100644 --- a/tests/isc/netmgr_common.c +++ b/tests/isc/netmgr_common.c @@ -313,20 +313,29 @@ connect_send_cb(isc_nmhandle_t *handle, isc_result_t eresult, void *cbarg) { F(); - if (eresult != ISC_R_SUCCESS) { + switch (eresult) { + case ISC_R_EOF: + case ISC_R_SHUTTINGDOWN: + case ISC_R_CANCELED: + case ISC_R_CONNECTIONRESET: /* Send failed, we need to stop reading too */ if (stream) { isc_nm_read_stop(handle); } else { isc_nm_cancelread(handle); } - goto unref; + break; + case ISC_R_SUCCESS: + if (have_expected_csends(atomic_fetch_add(&csends, 1) + 1)) { + do_csends_shutdown(loopmgr); + } + break; + default: + fprintf(stderr, "%s(%p, %s, %p)\n", __func__, handle, + isc_result_totext(eresult), cbarg); + assert_int_equal(eresult, ISC_R_SUCCESS); } - if (have_expected_csends(atomic_fetch_add(&csends, 1) + 1)) { - do_csends_shutdown(loopmgr); - } -unref: isc_refcount_decrement(&active_csends); isc_nmhandle_detach(&sendhandle); } @@ -374,7 +383,6 @@ connect_read_cb(isc_nmhandle_t *handle, isc_result_t eresult, case ISC_R_SHUTTINGDOWN: case ISC_R_CANCELED: case ISC_R_CONNECTIONRESET: - case ISC_R_CONNREFUSED: break; default: fprintf(stderr, "%s(%p, %s, %p)\n", __func__, handle, @@ -433,13 +441,16 @@ listen_send_cb(isc_nmhandle_t *handle, isc_result_t eresult, void *cbarg) { isc_refcount_decrement(&active_ssends); switch (eresult) { + case ISC_R_CANCELED: + case ISC_R_CONNECTIONRESET: + case ISC_R_EOF: + case ISC_R_SHUTTINGDOWN: + break; case ISC_R_SUCCESS: if (have_expected_ssends(atomic_fetch_add(&ssends, 1) + 1)) { do_ssends_shutdown(loopmgr); } break; - case ISC_R_CANCELED: - break; default: fprintf(stderr, "%s(%p, %s, %p)\n", __func__, handle, isc_result_totext(eresult), cbarg); @@ -459,9 +470,10 @@ listen_read_cb(isc_nmhandle_t *handle, isc_result_t eresult, F(); switch (eresult) { + case ISC_R_CANCELED: + case ISC_R_CONNECTIONRESET: case ISC_R_EOF: case ISC_R_SHUTTINGDOWN: - case ISC_R_CANCELED: break; case ISC_R_SUCCESS: memmove(&magic, region->base, sizeof(magic));