@@ -307,7 +307,6 @@ typedef struct {
307307 int read_bytes ;
308308 int read_idx ;
309309
310- wolfSSL_Mutex mutex ;
311310 COND_TYPE cond ;
312311
313312 int done ;
@@ -398,12 +397,12 @@ static double gettime_secs(int reset)
398397/* server send callback */
399398static int ServerMemSend (info_t * info , char * buf , int sz )
400399{
401- THREAD_CHECK_RET (wc_LockMutex (& info -> to_client .mutex ));
400+ THREAD_CHECK_RET (wolfSSL_CondStart (& info -> to_client .cond ));
402401
403402#ifndef BENCH_USE_NONBLOCK
404403 /* check for overflow */
405404 if (info -> to_client .write_idx + sz > MEM_BUFFER_SZ ) {
406- THREAD_CHECK_RET (wc_UnLockMutex (& info -> to_client .mutex ));
405+ THREAD_CHECK_RET (wolfSSL_CondEnd (& info -> to_client .cond ));
407406 fprintf (stderr , "ServerMemSend overflow\n" );
408407 return -1 ;
409408 }
@@ -416,9 +415,9 @@ static int ServerMemSend(info_t* info, char* buf, int sz)
416415 XMEMCPY (& info -> to_client .buf [info -> to_client .write_idx ], buf , sz );
417416 info -> to_client .write_idx += sz ;
418417 info -> to_client .write_bytes += sz ;
419- THREAD_CHECK_RET (wc_UnLockMutex (& info -> to_client .mutex ));
420418
421419 THREAD_CHECK_RET (wolfSSL_CondSignal (& info -> to_client .cond ));
420+ THREAD_CHECK_RET (wolfSSL_CondEnd (& info -> to_client .cond ));
422421
423422#ifdef BENCH_USE_NONBLOCK
424423 if (sz == 0 ) {
@@ -431,14 +430,12 @@ static int ServerMemSend(info_t* info, char* buf, int sz)
431430/* server recv callback */
432431static int ServerMemRecv (info_t * info , char * buf , int sz )
433432{
434- THREAD_CHECK_RET (wc_LockMutex (& info -> to_server .mutex ));
433+ THREAD_CHECK_RET (wolfSSL_CondStart (& info -> to_server .cond ));
435434
436435#ifndef BENCH_USE_NONBLOCK
437436 while (info -> to_server .write_idx - info -> to_server .read_idx < sz &&
438437 !info -> to_client .done ) {
439- THREAD_CHECK_RET (wc_UnLockMutex (& info -> to_server .mutex ));
440438 THREAD_CHECK_RET (wolfSSL_CondWait (& info -> to_server .cond ));
441- THREAD_CHECK_RET (wc_LockMutex (& info -> to_server .mutex ));
442439 }
443440#else
444441 if (info -> to_server .write_idx - info -> to_server .read_idx < sz ) {
@@ -456,7 +453,7 @@ static int ServerMemRecv(info_t* info, char* buf, int sz)
456453 info -> to_server .write_bytes = info -> to_server .write_idx = 0 ;
457454 }
458455
459- THREAD_CHECK_RET (wc_UnLockMutex (& info -> to_server .mutex ));
456+ THREAD_CHECK_RET (wolfSSL_CondEnd (& info -> to_server .cond ));
460457
461458 if (info -> to_client .done != 0 ) {
462459 return -1 ;
@@ -473,14 +470,14 @@ static int ServerMemRecv(info_t* info, char* buf, int sz)
473470/* client send callback */
474471static int ClientMemSend (info_t * info , char * buf , int sz )
475472{
476- THREAD_CHECK_RET (wc_LockMutex (& info -> to_server .mutex ));
473+ THREAD_CHECK_RET (wolfSSL_CondStart (& info -> to_server .cond ));
477474
478475#ifndef BENCH_USE_NONBLOCK
479476 /* check for overflow */
480477 if (info -> to_server .write_idx + sz > MEM_BUFFER_SZ ) {
481478 fprintf (stderr , "ClientMemSend overflow %d %d %d\n" ,
482479 info -> to_server .write_idx , sz , MEM_BUFFER_SZ );
483- THREAD_CHECK_RET (wc_UnLockMutex (& info -> to_server .mutex ));
480+ THREAD_CHECK_RET (wolfSSL_CondEnd (& info -> to_server .cond ));
484481 return -1 ;
485482 }
486483#else
@@ -493,8 +490,8 @@ static int ClientMemSend(info_t* info, char* buf, int sz)
493490 info -> to_server .write_idx += sz ;
494491 info -> to_server .write_bytes += sz ;
495492
496- THREAD_CHECK_RET (wc_UnLockMutex (& info -> to_server .mutex ));
497493 THREAD_CHECK_RET (wolfSSL_CondSignal (& info -> to_server .cond ));
494+ THREAD_CHECK_RET (wolfSSL_CondEnd (& info -> to_server .cond ));
498495
499496#ifdef BENCH_USE_NONBLOCK
500497 if (sz == 0 ) {
@@ -507,14 +504,12 @@ static int ClientMemSend(info_t* info, char* buf, int sz)
507504/* client recv callback */
508505static int ClientMemRecv (info_t * info , char * buf , int sz )
509506{
510- THREAD_CHECK_RET (wc_LockMutex (& info -> to_client .mutex ));
507+ THREAD_CHECK_RET (wolfSSL_CondStart (& info -> to_client .cond ));
511508
512509#ifndef BENCH_USE_NONBLOCK
513510 while (info -> to_client .write_idx - info -> to_client .read_idx < sz &&
514511 !info -> to_server .done ) {
515- THREAD_CHECK_RET (wc_UnLockMutex (& info -> to_client .mutex ));
516512 THREAD_CHECK_RET (wolfSSL_CondWait (& info -> to_client .cond ));
517- THREAD_CHECK_RET (wc_LockMutex (& info -> to_client .mutex ));
518513 }
519514#else
520515 if (info -> to_client .write_idx - info -> to_client .read_idx < sz ) {
@@ -532,7 +527,7 @@ static int ClientMemRecv(info_t* info, char* buf, int sz)
532527 info -> to_client .write_bytes = info -> to_client .write_idx = 0 ;
533528 }
534529
535- THREAD_CHECK_RET (wc_UnLockMutex (& info -> to_client .mutex ));
530+ THREAD_CHECK_RET (wolfSSL_CondEnd (& info -> to_client .cond ));
536531
537532 if (info -> to_server .done != 0 ) {
538533 return -1 ;
@@ -1054,15 +1049,13 @@ static int bench_tls_client(info_t* info)
10541049#if !defined(SINGLE_THREADED ) && defined(WOLFSSL_DTLS )
10551050 /* synchronize with server */
10561051 if (info -> doDTLS && !info -> clientOrserverOnly ) {
1057- THREAD_CHECK_RET (wc_LockMutex (& info -> dtls_mutex ));
1052+ THREAD_CHECK_RET (wolfSSL_CondStart (& info -> dtls_cond ));
10581053 if (info -> serverReady != 1 ) {
1059- THREAD_CHECK_RET (wc_UnLockMutex (& info -> dtls_mutex ));
10601054 THREAD_CHECK_RET (wolfSSL_CondWait (& info -> dtls_cond ));
1061- THREAD_CHECK_RET (wc_LockMutex (& info -> dtls_mutex ));
10621055 }
10631056 /* for next loop */
10641057 info -> serverReady = 0 ;
1065- THREAD_CHECK_RET (wc_UnLockMutex (& info -> dtls_mutex ));
1058+ THREAD_CHECK_RET (wolfSSL_CondEnd (& info -> dtls_cond ));
10661059 }
10671060#endif
10681061 /* perform connect */
@@ -1204,9 +1197,11 @@ static THREAD_RETURN WOLFSSL_THREAD_NO_JOIN client_thread(void* args)
12041197
12051198 ret = bench_tls_client (info );
12061199
1200+ THREAD_CHECK_RET (wolfSSL_CondStart (& info -> to_server .cond ));
12071201 info -> to_client .done = 1 ;
12081202 info -> client .ret = ret ;
12091203 THREAD_CHECK_RET (wolfSSL_CondSignal (& info -> to_server .cond ));
1204+ THREAD_CHECK_RET (wolfSSL_CondEnd (& info -> to_server .cond ));
12101205
12111206 WOLFSSL_RETURN_FROM_THREAD (NULL );
12121207}
@@ -1292,10 +1287,10 @@ static int SocketWaitClient(info_t* info)
12921287 char msg [64 ];
12931288#ifndef SINGLE_THREADED
12941289 if (!info -> clientOrserverOnly ) {
1295- THREAD_CHECK_RET (wc_LockMutex (& info -> dtls_mutex ));
1290+ THREAD_CHECK_RET (wolfSSL_CondStart (& info -> dtls_cond ));
12961291 info -> serverReady = 1 ;
1297- THREAD_CHECK_RET (wc_UnLockMutex (& info -> dtls_mutex ));
12981292 THREAD_CHECK_RET (wolfSSL_CondSignal (& info -> dtls_cond ));
1293+ THREAD_CHECK_RET (wolfSSL_CondEnd (& info -> dtls_cond ));
12991294 }
13001295#endif
13011296 connd = (int )recvfrom (info -> listenFd , (char * )msg , sizeof (msg ),
@@ -1662,9 +1657,11 @@ static THREAD_RETURN WOLFSSL_THREAD_NO_JOIN server_thread(void* args)
16621657 }
16631658 }
16641659
1660+ THREAD_CHECK_RET (wolfSSL_CondStart (& info -> to_client .cond ));
16651661 info -> to_server .done = 1 ;
16661662 info -> server .ret = ret ;
16671663 THREAD_CHECK_RET (wolfSSL_CondSignal (& info -> to_client .cond ));
1664+ THREAD_CHECK_RET (wolfSSL_CondEnd (& info -> to_client .cond ));
16681665
16691666 WOLFSSL_RETURN_FROM_THREAD (NULL );
16701667}
@@ -2127,8 +2124,6 @@ int bench_tls(void* args)
21272124 else {
21282125 #if !defined(SINGLE_THREADED ) && defined(WOLFSSL_THREAD_NO_JOIN )
21292126 info -> useLocalMem = argLocalMem ;
2130- THREAD_CHECK_RET (wc_InitMutex (& info -> to_server .mutex ));
2131- THREAD_CHECK_RET (wc_InitMutex (& info -> to_client .mutex ));
21322127 #ifdef WOLFSSL_DTLS
21332128 THREAD_CHECK_RET (wc_InitMutex (& info -> dtls_mutex ));
21342129 THREAD_CHECK_RET (wolfSSL_CondInit (& info -> dtls_cond ));
0 commit comments