]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
tests: retry gnutls_bye in tests that define RANDOMIZE
authorAlexander Sosedkin <asosedkin@redhat.com>
Mon, 29 Jun 2026 14:14:04 +0000 (16:14 +0200)
committerAlexander Sosedkin <asosedki@redhat.com>
Fri, 31 Jul 2026 09:08:35 +0000 (09:08 +0000)
Signed-off-by: Alexander Sosedkin <asosedkin@redhat.com>
tests/eagain-auto-auth.c
tests/eagain.c
tests/handshake-write.c
tests/mini-eagain-dtls.c
tests/mini-emsgsize-dtls.c
tests/tls13/key_update.c
tests/tls13/key_update_multiple.c

index 6a76988a9db5a831ca2b2edd833bca6c79f530df..c4b3fce8342d94695e0973164bd9d2b9e5e9aa49 100644 (file)
@@ -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);
index fb05599bd7149ad4c1383c1604c173706b27a031..b14803812d9afff4cb4be32f771e89fef1c9aeb3 100644 (file)
@@ -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);
index 600cebf8d0c17deb909c13bdd31788482cb48c91..fb937d1d38ae59ecd98f46d80f76bb185ce97ee8 100644 (file)
@@ -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);
index a46443f28249b42be0b53558dc800cdb0b89b306..f7ff47cd4279bf4f946edd141aa7179b8004ef52 100644 (file)
@@ -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);
index 7a3b8e2d98880b42a947fdd026cb2843ebb33bf6..fd2427061835056f719562a0656c975e39373277 100644 (file)
@@ -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);
index 8aec832f7a80f9f5afaaeb81393598ed6e650e1c..ce2e6f8ba66ad9b3e1dabd33d65d262d31447a22 100644 (file)
@@ -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);
index e2fa80f430058e9d436a615eda19b127e20beb1d..1235732630c9b3502743d8bc31d9195b596e7140 100644 (file)
@@ -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);