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; }