diff options
Diffstat (limited to 'test/radix/quic_bindings.c')
-rw-r--r-- | test/radix/quic_bindings.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/test/radix/quic_bindings.c b/test/radix/quic_bindings.c index d90148e03d..03d8e48a8b 100644 --- a/test/radix/quic_bindings.c +++ b/test/radix/quic_bindings.c @@ -64,9 +64,10 @@ typedef struct radix_process_st { STACK_OF(RADIX_THREAD) *threads; /* Process-global state. */ - CRYPTO_MUTEX *gm; /* global mutex */ - LHASH_OF(RADIX_OBJ) *objs; /* protected by gm */ - OSSL_TIME time_slip; /* protected by gm */ + CRYPTO_MUTEX *gm; /* global mutex */ + LHASH_OF(RADIX_OBJ) *objs; /* protected by gm */ + OSSL_TIME time_slip; /* protected by gm */ + BIO *keylog_out; /* protected by gm */ int done_join_all_threads; @@ -142,6 +143,8 @@ static int RADIX_OBJ_cmp(const RADIX_OBJ *a, const RADIX_OBJ *b) static int RADIX_PROCESS_init(RADIX_PROCESS *rp, size_t node_idx, size_t process_idx) { + const char *keylog_path; + #if defined(OPENSSL_THREADS) if (!TEST_ptr(rp->gm = ossl_crypto_mutex_new())) goto err; @@ -153,6 +156,12 @@ static int RADIX_PROCESS_init(RADIX_PROCESS *rp, size_t node_idx, size_t process if (!TEST_ptr(rp->threads = sk_RADIX_THREAD_new(NULL))) goto err; + rp->keylog_out = NULL; + keylog_path = ossl_safe_getenv("SSLKEYLOGFILE"); + if (keylog_path != NULL && *keylog_path != '\0' + && !TEST_ptr(rp->keylog_out = BIO_new_file(keylog_path, "a"))) + goto err; + rp->node_idx = node_idx; rp->process_idx = process_idx; rp->done_join_all_threads = 0; @@ -412,6 +421,8 @@ static void RADIX_PROCESS_cleanup(RADIX_PROCESS *rp) lh_RADIX_OBJ_free(rp->objs); rp->objs = NULL; + BIO_free_all(rp->keylog_out); + rp->keylog_out = NULL; ossl_crypto_mutex_free(&rp->gm); } |