From: Andrey Volk Date: Fri, 31 Jan 2025 16:05:04 +0000 (+0300) Subject: [libesl] Coverity 1589045 Check of thread-shared field evades lock acquisition X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=17cd75182748a2c4450dd005eca0a8cbd94e2318;p=thirdparty%2Ffreeswitch.git [libesl] Coverity 1589045 Check of thread-shared field evades lock acquisition --- diff --git a/libs/esl/src/esl.c b/libs/esl/src/esl.c index f39bda83b1..6f085e26db 100644 --- a/libs/esl/src/esl.c +++ b/libs/esl/src/esl.c @@ -1167,13 +1167,6 @@ ESL_DECLARE(esl_status_t) esl_disconnect(esl_handle_t *handle) esl_event_safe_destroy(&handle->last_ievent); esl_event_safe_destroy(&handle->info_event); - if (mutex) { - esl_mutex_unlock(mutex); - esl_mutex_lock(mutex); - esl_mutex_unlock(mutex); - esl_mutex_destroy(&mutex); - } - if (handle->packet_buf) { esl_buffer_destroy(&handle->packet_buf); } @@ -1181,6 +1174,13 @@ ESL_DECLARE(esl_status_t) esl_disconnect(esl_handle_t *handle) memset(handle, 0, sizeof(*handle)); handle->destroyed = 1; + if (mutex) { + esl_mutex_unlock(mutex); + esl_mutex_lock(mutex); + esl_mutex_unlock(mutex); + esl_mutex_destroy(&mutex); + } + return status; }