]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Ignore additional return codes in the netmgr unit tests
authorOndřej Surý <ondrej@isc.org>
Wed, 12 Oct 2022 12:40:49 +0000 (14:40 +0200)
committerOndřej Surý <ondrej@isc.org>
Wed, 12 Oct 2022 13:07:53 +0000 (15:07 +0200)
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

index f77ed5d7613d292fded3a9d87b399ee61dccf456..e92a59bad5458f2e26449608df42375a03878f9e 100644 (file)
@@ -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));