switch_channel_t *channel = NULL;
switch_event_t *revent = NULL;
const char *var;
+ int locked = 1;
switch_mutex_lock(globals.listener_mutex);
prefs.threads++;
if ((session = listener->session)) {
if (switch_core_session_read_lock(session) != SWITCH_STATUS_SUCCESS) {
+ locked = 0;
goto done;
}
}
if (listener->session) {
switch_channel_clear_flag(switch_core_session_get_channel(listener->session), CF_CONTROLLED);
switch_clear_flag_locked(listener, LFLAG_SESSION);
- switch_core_session_rwunlock(listener->session);
+ if (locked) {
+ switch_core_session_rwunlock(listener->session);
+ }
} else if (listener->pool) {
switch_memory_pool_t *pool = listener->pool;
switch_core_destroy_memory_pool(&pool);