From ac4cc8443dddc8e900188b4beae54c7ca222094c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Wed, 12 Oct 2022 14:40:49 +0200 Subject: [PATCH] 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. --- tests/isc/netmgr_common.c | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/tests/isc/netmgr_common.c b/tests/isc/netmgr_common.c index f77ed5d761..e92a59bad5 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));