]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-11706 [core] use unique mutex for stack_count
authorChris Rienzo <chris@signalwire.com>
Wed, 20 Mar 2019 00:58:10 +0000 (00:58 +0000)
committerChris Rienzo <chris@rienzo.com>
Wed, 20 Mar 2019 03:14:47 +0000 (23:14 -0400)
src/include/private/switch_core_pvt.h
src/switch_core_session.c

index 1d61357644846e8c65af4cccf248f82d97b07e2d..8f8076a5bf34f5a2688e295fbfc15cadb5afef75 100644 (file)
@@ -129,6 +129,7 @@ struct switch_core_session {
        switch_audio_resampler_t *write_resampler;
 
        switch_mutex_t *mutex;
+       switch_mutex_t *stack_count_mutex;
        switch_mutex_t *resample_mutex;
        switch_mutex_t *codec_read_mutex;
        switch_mutex_t *codec_write_mutex;
index 87f2b3a2e5f91900d6627c62e7b896c478074f8a..3084fd5481eef256d77470887641c66dc090f786 100644 (file)
@@ -2404,6 +2404,7 @@ SWITCH_DECLARE(switch_core_session_t *) switch_core_session_request_uuid(switch_
        session->enc_read_frame.buflen = sizeof(session->enc_read_buf);
 
        switch_mutex_init(&session->mutex, SWITCH_MUTEX_NESTED, session->pool);
+       switch_mutex_init(&session->stack_count_mutex, SWITCH_MUTEX_NESTED, session->pool);
        switch_mutex_init(&session->resample_mutex, SWITCH_MUTEX_NESTED, session->pool);
        switch_mutex_init(&session->codec_read_mutex, SWITCH_MUTEX_NESTED, session->pool);
        switch_mutex_init(&session->codec_write_mutex, SWITCH_MUTEX_NESTED, session->pool);
@@ -2906,12 +2907,12 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_exec(switch_core_session_t *
 SWITCH_DECLARE(uint32_t) switch_core_session_stack_count(switch_core_session_t *session, int x)
 {
        uint32_t stack_count = 0;
-       switch_mutex_lock(session->mutex);
+       switch_mutex_lock(session->stack_count_mutex);
        if (x > 0) session->stack_count++;
        else if (x < 0) session->stack_count--;
 
        stack_count = session->stack_count;
-       switch_mutex_unlock(session->mutex);
+       switch_mutex_unlock(session->stack_count_mutex);
        return stack_count;
 }