Move the config->async check into RetryAsync. Change-Id: Ica2776825a55fe501a7b03cf2dd0ff7ba0338ec9 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/37185 Commit-Queue: David Benjamin <davidben@google.com> Reviewed-by: Steven Valdez <svaldez@google.com>
diff --git a/ssl/test/bssl_shim.cc b/ssl/test/bssl_shim.cc index f58c151..261f6c6 100644 --- a/ssl/test/bssl_shim.cc +++ b/ssl/test/bssl_shim.cc
@@ -204,7 +204,7 @@ return -1; } } - } while (config->async && RetryAsync(ssl, ret)); + } while (RetryAsync(ssl, ret)); if (config->peek_then_read && ret > 0) { std::unique_ptr<uint8_t[]> buf(new uint8_t[static_cast<size_t>(ret)]); @@ -233,7 +233,6 @@ // operations. It returns the result of the final |SSL_write| call. static int WriteAll(SSL *ssl, const void *in_, size_t in_len) { const uint8_t *in = reinterpret_cast<const uint8_t *>(in_); - const TestConfig *config = GetTestConfig(ssl); int ret; do { ret = SSL_write(ssl, in, in_len); @@ -241,29 +240,27 @@ in += ret; in_len -= ret; } - } while ((config->async && RetryAsync(ssl, ret)) || (ret > 0 && in_len > 0)); + } while (RetryAsync(ssl, ret) || (ret > 0 && in_len > 0)); return ret; } // DoShutdown calls |SSL_shutdown|, resolving any asynchronous operations. It // returns the result of the final |SSL_shutdown| call. static int DoShutdown(SSL *ssl) { - const TestConfig *config = GetTestConfig(ssl); int ret; do { ret = SSL_shutdown(ssl); - } while (config->async && RetryAsync(ssl, ret)); + } while (RetryAsync(ssl, ret)); return ret; } // DoSendFatalAlert calls |SSL_send_fatal_alert|, resolving any asynchronous // operations. It returns the result of the final |SSL_send_fatal_alert| call. static int DoSendFatalAlert(SSL *ssl, uint8_t alert) { - const TestConfig *config = GetTestConfig(ssl); int ret; do { ret = SSL_send_fatal_alert(ssl, alert); - } while (config->async && RetryAsync(ssl, ret)); + } while (RetryAsync(ssl, ret)); return ret; } @@ -833,7 +830,7 @@ ret = CheckIdempotentError("SSL_do_handshake", ssl, [&]() -> int { return SSL_do_handshake(ssl); }); - } while (config->async && RetryAsync(ssl, ret)); + } while (RetryAsync(ssl, ret)); if (config->forbid_renegotiation_after_handshake) { SSL_set_renegotiate_mode(ssl, ssl_renegotiate_never); @@ -854,7 +851,7 @@ if (config->handshake_twice) { do { ret = SSL_do_handshake(ssl); - } while (config->async && RetryAsync(ssl, ret)); + } while (RetryAsync(ssl, ret)); if (ret != 1) { return false; }
diff --git a/ssl/test/handshake_util.cc b/ssl/test/handshake_util.cc index afead7f..4b1dcc8 100644 --- a/ssl/test/handshake_util.cc +++ b/ssl/test/handshake_util.cc
@@ -38,14 +38,13 @@ using namespace bssl; bool RetryAsync(SSL *ssl, int ret) { - // No error; don't retry. - if (ret >= 0) { + const TestConfig *config = GetTestConfig(ssl); + TestState *test_state = GetTestState(ssl); + // No error or not async; don't retry. + if (ret >= 0 || !config->async) { return false; } - TestState *test_state = GetTestState(ssl); - assert(GetTestConfig(ssl)->async); - if (test_state->packeted_bio != nullptr && PacketedBioAdvanceClock(test_state->packeted_bio)) { // The DTLS retransmit logic silently ignores write failures. So the test @@ -71,8 +70,7 @@ AsyncBioAllowWrite(test_state->async_bio, 1); return true; case SSL_ERROR_WANT_CHANNEL_ID_LOOKUP: { - UniquePtr<EVP_PKEY> pkey = - LoadPrivateKey(GetTestConfig(ssl)->send_channel_id); + UniquePtr<EVP_PKEY> pkey = LoadPrivateKey(config->send_channel_id); if (!pkey) { return false; }
diff --git a/ssl/test/handshaker.cc b/ssl/test/handshaker.cc index 9888876..a6bf643 100644 --- a/ssl/test/handshaker.cc +++ b/ssl/test/handshaker.cc
@@ -35,7 +35,7 @@ } bool Handshaker(const TestConfig *config, int rfd, int wfd, - Span<const uint8_t> input, int control) { + Span<const uint8_t> input, int control) { UniquePtr<SSL_CTX> ctx = config->SetupCtx(/*old_ctx=*/nullptr); if (!ctx) { return false; @@ -80,7 +80,7 @@ } continue; } - if (!config->async || !RetryAsync(ssl.get(), ret)) { + if (!RetryAsync(ssl.get(), ret)) { break; } }