diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp index ae95469b55a176930600f2de861ede6c9d7060a0..44ebe4278713ec11e1e510927e0eed31d7f0b439 100644 --- a/src/sbbs3/main.cpp +++ b/src/sbbs3/main.cpp @@ -2965,6 +2965,7 @@ sbbs_t::sbbs_t(ushort node_num, SOCKADDR_IN addr, const char* name, SOCKET sd, #ifdef USE_CRYPTLIB ssh_mode=false; + ssh_mutex_created=false; passthru_input_thread_running = false; passthru_output_thread_running = false; #endif @@ -3353,7 +3354,10 @@ bool sbbs_t::init() } } +#ifdef USE_CRYPTLIB pthread_mutex_init(&ssh_mutex,NULL); + ssh_mutex_created = true; +#endif pthread_mutex_init(&input_thread_mutex,NULL); reset_logon_vars(); @@ -3481,8 +3485,10 @@ sbbs_t::~sbbs_t() FREE_AND_NULL(batdn_cdt); FREE_AND_NULL(batdn_alt); - while(pthread_mutex_destroy(&ssh_mutex)==EBUSY) +#ifdef USE_CRYPTLIB + while(ssh_mutex_created && pthread_mutex_destroy(&ssh_mutex)==EBUSY) mswait(1); +#endif while(pthread_mutex_destroy(&input_thread_mutex)==EBUSY) mswait(1); diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h index 67a120f0f5f78d8ac2f00d00bdedc732ab2ce886..acd1ff4e57ae19db1b66b7d8877d8d790d59fe98 100644 --- a/src/sbbs3/sbbs.h +++ b/src/sbbs3/sbbs.h @@ -336,6 +336,7 @@ public: pthread_mutex_t input_thread_mutex; bool input_thread_mutex_locked; // by someone other than the input_thread pthread_mutex_t ssh_mutex; + bool ssh_mutex_created; int outcom(uchar ch); // send character int incom(unsigned long timeout=0); // receive character