@@ -416,9 +416,9 @@ static int ServerMemSend(info_t* info, char* buf, int sz)
416416 XMEMCPY (& info -> to_client .buf [info -> to_client .write_idx ], buf , sz );
417417 info -> to_client .write_idx += sz ;
418418 info -> to_client .write_bytes += sz ;
419+ THREAD_CHECK_RET (wc_UnLockMutex (& info -> to_client .mutex ));
419420
420421 THREAD_CHECK_RET (wolfSSL_CondSignal (& info -> to_client .cond ));
421- THREAD_CHECK_RET (wc_UnLockMutex (& info -> to_client .mutex ));
422422
423423#ifdef BENCH_USE_NONBLOCK
424424 if (sz == 0 ) {
@@ -436,7 +436,9 @@ static int ServerMemRecv(info_t* info, char* buf, int sz)
436436#ifndef BENCH_USE_NONBLOCK
437437 while (info -> to_server .write_idx - info -> to_server .read_idx < sz &&
438438 !info -> to_client .done ) {
439+ THREAD_CHECK_RET (wc_UnLockMutex (& info -> to_server .mutex ));
439440 THREAD_CHECK_RET (wolfSSL_CondWait (& info -> to_server .cond ));
441+ THREAD_CHECK_RET (wc_LockMutex (& info -> to_server .mutex ));
440442 }
441443#else
442444 if (info -> to_server .write_idx - info -> to_server .read_idx < sz ) {
@@ -491,8 +493,8 @@ static int ClientMemSend(info_t* info, char* buf, int sz)
491493 info -> to_server .write_idx += sz ;
492494 info -> to_server .write_bytes += sz ;
493495
494- THREAD_CHECK_RET (wolfSSL_CondSignal (& info -> to_server .cond ));
495496 THREAD_CHECK_RET (wc_UnLockMutex (& info -> to_server .mutex ));
497+ THREAD_CHECK_RET (wolfSSL_CondSignal (& info -> to_server .cond ));
496498
497499#ifdef BENCH_USE_NONBLOCK
498500 if (sz == 0 ) {
@@ -510,7 +512,9 @@ static int ClientMemRecv(info_t* info, char* buf, int sz)
510512#ifndef BENCH_USE_NONBLOCK
511513 while (info -> to_client .write_idx - info -> to_client .read_idx < sz &&
512514 !info -> to_server .done ) {
515+ THREAD_CHECK_RET (wc_UnLockMutex (& info -> to_client .mutex ));
513516 THREAD_CHECK_RET (wolfSSL_CondWait (& info -> to_client .cond ));
517+ THREAD_CHECK_RET (wc_LockMutex (& info -> to_client .mutex ));
514518 }
515519#else
516520 if (info -> to_client .write_idx - info -> to_client .read_idx < sz ) {
@@ -1052,7 +1056,9 @@ static int bench_tls_client(info_t* info)
10521056 if (info -> doDTLS && !info -> clientOrserverOnly ) {
10531057 THREAD_CHECK_RET (wc_LockMutex (& info -> dtls_mutex ));
10541058 if (info -> serverReady != 1 ) {
1059+ THREAD_CHECK_RET (wc_UnLockMutex (& info -> dtls_mutex ));
10551060 THREAD_CHECK_RET (wolfSSL_CondWait (& info -> dtls_cond ));
1061+ THREAD_CHECK_RET (wc_LockMutex (& info -> dtls_mutex ));
10561062 }
10571063 /* for next loop */
10581064 info -> serverReady = 0 ;
@@ -1198,9 +1204,9 @@ static THREAD_RETURN WOLFSSL_THREAD_NO_JOIN client_thread(void* args)
11981204
11991205 ret = bench_tls_client (info );
12001206
1201- THREAD_CHECK_RET (wolfSSL_CondSignal (& info -> to_server .cond ));
12021207 info -> to_client .done = 1 ;
12031208 info -> client .ret = ret ;
1209+ THREAD_CHECK_RET (wolfSSL_CondSignal (& info -> to_server .cond ));
12041210
12051211 WOLFSSL_RETURN_FROM_THREAD (NULL );
12061212}
@@ -1288,8 +1294,8 @@ static int SocketWaitClient(info_t* info)
12881294 if (!info -> clientOrserverOnly ) {
12891295 THREAD_CHECK_RET (wc_LockMutex (& info -> dtls_mutex ));
12901296 info -> serverReady = 1 ;
1291- THREAD_CHECK_RET (wolfSSL_CondSignal (& info -> dtls_cond ));
12921297 THREAD_CHECK_RET (wc_UnLockMutex (& info -> dtls_mutex ));
1298+ THREAD_CHECK_RET (wolfSSL_CondSignal (& info -> dtls_cond ));
12931299 }
12941300#endif
12951301 connd = (int )recvfrom (info -> listenFd , (char * )msg , sizeof (msg ),
@@ -1656,9 +1662,9 @@ static THREAD_RETURN WOLFSSL_THREAD_NO_JOIN server_thread(void* args)
16561662 }
16571663 }
16581664
1659- THREAD_CHECK_RET (wolfSSL_CondSignal (& info -> to_client .cond ));
16601665 info -> to_server .done = 1 ;
16611666 info -> server .ret = ret ;
1667+ THREAD_CHECK_RET (wolfSSL_CondSignal (& info -> to_client .cond ));
16621668
16631669 WOLFSSL_RETURN_FROM_THREAD (NULL );
16641670}
0 commit comments