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;
}
}