From: Alexander Sosedkin Date: Mon, 29 Jun 2026 14:14:04 +0000 (+0200) Subject: tests: retry gnutls_bye in tests that define RANDOMIZE X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2d47ce4dfe99e5b6ee0083e609ee4ed28c5bd792;p=thirdparty%2Fgnutls.git tests: retry gnutls_bye in tests that define RANDOMIZE Signed-off-by: Alexander Sosedkin --- diff --git a/tests/eagain-auto-auth.c b/tests/eagain-auto-auth.c index 6a76988a9d..c4b3fce834 100644 --- a/tests/eagain-auto-auth.c +++ b/tests/eagain-auto-auth.c @@ -36,8 +36,7 @@ #include "cert-common.h" #include "cmocka-common.h" -/* This tests operation under non-blocking mode in TLS1.2/TLS1.3 - * rekey/rehandshake. +/* This tests the GNUTLS_AUTO_REAUTH flag functionality under non-blocking mode. */ static void tls_log_func(int level, const char *str) { @@ -214,8 +213,14 @@ static void async_handshake(void **glob_state, const char *prio, unsigned rehsk) msglen = strlen(MSG); TRANSFER(client, server, MSG, msglen, buffer, MAX_BUF); - assert_true(gnutls_bye(client, GNUTLS_SHUT_WR) >= 0); - assert_true(gnutls_bye(server, GNUTLS_SHUT_WR) >= 0); + do { + cret = gnutls_bye(client, GNUTLS_SHUT_WR); + } while (cret == GNUTLS_E_AGAIN || cret == GNUTLS_E_INTERRUPTED); + assert_return_code(cret, 0); + do { + sret = gnutls_bye(server, GNUTLS_SHUT_WR); + } while (sret == GNUTLS_E_AGAIN || sret == GNUTLS_E_INTERRUPTED); + assert_return_code(sret, 0); gnutls_deinit(client); gnutls_deinit(server); diff --git a/tests/eagain.c b/tests/eagain.c index fb05599bd7..b14803812d 100644 --- a/tests/eagain.c +++ b/tests/eagain.c @@ -144,8 +144,14 @@ static void async_handshake(void **glob_state, const char *prio, unsigned rehsk) msglen = strlen(MSG); TRANSFER(client, server, MSG, msglen, buffer, MAX_BUF); - gnutls_bye(client, GNUTLS_SHUT_WR); - gnutls_bye(server, GNUTLS_SHUT_WR); + do { + cret = gnutls_bye(client, GNUTLS_SHUT_WR); + } while (cret == GNUTLS_E_AGAIN || cret == GNUTLS_E_INTERRUPTED); + assert_return_code(cret, 0); + do { + sret = gnutls_bye(server, GNUTLS_SHUT_WR); + } while (sret == GNUTLS_E_AGAIN || sret == GNUTLS_E_INTERRUPTED); + assert_return_code(sret, 0); gnutls_deinit(client); gnutls_deinit(server); diff --git a/tests/handshake-write.c b/tests/handshake-write.c index 600cebf8d0..fb937d1d38 100644 --- a/tests/handshake-write.c +++ b/tests/handshake-write.c @@ -158,8 +158,15 @@ static void run(const char *name, const char *prio) TRANSFER(client, server, MSG, strlen(MSG), buffer, MAX_BUF); TRANSFER(server, client, MSG, strlen(MSG), buffer, MAX_BUF); - gnutls_bye(client, GNUTLS_SHUT_WR); - gnutls_bye(server, GNUTLS_SHUT_WR); + do { + cret = gnutls_bye(client, GNUTLS_SHUT_WR); + } while (cret == GNUTLS_E_AGAIN || cret == GNUTLS_E_INTERRUPTED); + assert(cret == 0); + + do { + sret = gnutls_bye(server, GNUTLS_SHUT_WR); + } while (sret == GNUTLS_E_AGAIN || sret == GNUTLS_E_INTERRUPTED); + assert(sret == 0); gnutls_deinit(client); gnutls_deinit(server); diff --git a/tests/mini-eagain-dtls.c b/tests/mini-eagain-dtls.c index a46443f282..f7ff47cd42 100644 --- a/tests/mini-eagain-dtls.c +++ b/tests/mini-eagain-dtls.c @@ -123,8 +123,17 @@ void doit(void) if (debug) fputs("\n", stdout); - gnutls_bye(client, GNUTLS_SHUT_WR); - gnutls_bye(server, GNUTLS_SHUT_WR); + do { + cret = gnutls_bye(client, GNUTLS_SHUT_WR); + } while (cret < 0 && !gnutls_error_is_fatal(cret)); + if (cret < 0) + fail("error in client bye: %s\n", gnutls_strerror(cret)); + + do { + sret = gnutls_bye(server, GNUTLS_SHUT_WR); + } while (sret < 0 && !gnutls_error_is_fatal(sret)); + if (sret < 0) + fail("error in server bye: %s\n", gnutls_strerror(sret)); gnutls_deinit(client); gnutls_deinit(server); diff --git a/tests/mini-emsgsize-dtls.c b/tests/mini-emsgsize-dtls.c index 7a3b8e2d98..fd24270618 100644 --- a/tests/mini-emsgsize-dtls.c +++ b/tests/mini-emsgsize-dtls.c @@ -173,8 +173,17 @@ void doit(void) if (debug) fputs("\n", stdout); - gnutls_bye(client, GNUTLS_SHUT_WR); - gnutls_bye(server, GNUTLS_SHUT_WR); + do { + cret = gnutls_bye(client, GNUTLS_SHUT_WR); + } while (cret < 0 && !gnutls_error_is_fatal(cret)); + if (cret < 0) + fail("Error in client bye %s\n", gnutls_strerror(cret)); + + do { + sret = gnutls_bye(server, GNUTLS_SHUT_WR); + } while (sret < 0 && !gnutls_error_is_fatal(sret)); + if (sret < 0) + fail("Error in server bye %s\n", gnutls_strerror(sret)); gnutls_deinit(client); gnutls_deinit(server); diff --git a/tests/tls13/key_update.c b/tests/tls13/key_update.c index 8aec832f7a..ce2e6f8ba6 100644 --- a/tests/tls13/key_update.c +++ b/tests/tls13/key_update.c @@ -355,8 +355,17 @@ static void run(const char *name, unsigned test, int cfd, int sfd) break; } - gnutls_bye(client, GNUTLS_SHUT_WR); - gnutls_bye(server, GNUTLS_SHUT_WR); + do { + cret = gnutls_bye(client, GNUTLS_SHUT_WR); + } while (cret < 0 && !gnutls_error_is_fatal(cret)); + if (cret < 0) + fail("error in client bye: %s\n", gnutls_strerror(cret)); + + do { + sret = gnutls_bye(server, GNUTLS_SHUT_WR); + } while (sret < 0 && !gnutls_error_is_fatal(sret)); + if (sret < 0) + fail("error in server bye: %s\n", gnutls_strerror(sret)); gnutls_deinit(client); gnutls_deinit(server); diff --git a/tests/tls13/key_update_multiple.c b/tests/tls13/key_update_multiple.c index e2fa80f430..1235732630 100644 --- a/tests/tls13/key_update_multiple.c +++ b/tests/tls13/key_update_multiple.c @@ -201,8 +201,15 @@ static void run(const char *name, bool exceed_limit) EMPTY_BUF(server, client, buffer, MAX_BUF); } - gnutls_bye(client, GNUTLS_SHUT_WR); - gnutls_bye(server, GNUTLS_SHUT_WR); + do { + cret = gnutls_bye(client, GNUTLS_SHUT_WR); + } while (cret == GNUTLS_E_AGAIN || cret == GNUTLS_E_INTERRUPTED); + assert(cret >= 0); + + do { + sret = gnutls_bye(server, GNUTLS_SHUT_WR); + } while (sret == GNUTLS_E_AGAIN || sret == GNUTLS_E_INTERRUPTED); + assert(sret >= 0); gnutls_deinit(client); gnutls_deinit(server);