From b7c985096c5ccf6088e9d889eecdceb638b3f001 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 15 May 2007 02:21:53 +0000 Subject: [PATCH] fix locking bug git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@5183 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/include/switch_core.h | 2 +- src/mod/applications/mod_commands/mod_commands.c | 6 +++--- src/switch_ivr_bridge.c | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/include/switch_core.h b/src/include/switch_core.h index 35c69bda7f..afd85294c2 100644 --- a/src/include/switch_core.h +++ b/src/include/switch_core.h @@ -491,7 +491,7 @@ SWITCH_DECLARE(char *) switch_core_session_get_uuid(switch_core_session_t *sessi SWITCH_DECLARE(char *) switch_core_get_uuid(void); #ifdef SWITCH_DEBUG_RWLOCKS -SWITCH_DECLARE(switch_core_session_t *) switch_core_session_perform_locate(char *uuid_str, const char *file, const char *func, int line); +SWITCH_DECLARE(switch_core_session_t *) switch_core_session_perform_locate(const char *uuid_str, const char *file, const char *func, int line); #endif /*! diff --git a/src/mod/applications/mod_commands/mod_commands.c b/src/mod/applications/mod_commands/mod_commands.c index c93ab9e31e..a90011a34e 100644 --- a/src/mod/applications/mod_commands/mod_commands.c +++ b/src/mod/applications/mod_commands/mod_commands.c @@ -575,7 +575,7 @@ SWITCH_STANDARD_API(session_record_function) stream->write_function(stream, "-Error Cannot locate session!\n"); return SWITCH_STATUS_SUCCESS; } - + if (switch_strlen_zero(action) || switch_strlen_zero(path)) { goto usage; } @@ -594,11 +594,11 @@ SWITCH_STANDARD_API(session_record_function) stream->write_function(stream, "USAGE: %s\n", session_record_api_interface.syntax); switch_safe_free(mycmd); - return SWITCH_STATUS_SUCCESS; + done: - if (session) { + if (rsession) { switch_core_session_rwunlock(rsession); } diff --git a/src/switch_ivr_bridge.c b/src/switch_ivr_bridge.c index 74900388a2..c13b73813d 100644 --- a/src/switch_ivr_bridge.c +++ b/src/switch_ivr_bridge.c @@ -644,14 +644,14 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_uuid_bridge(char *originator_uuid, ch switch_channel_set_state_flag(originator_channel, CF_TRANSFER); switch_channel_set_state_flag(originatee_channel, CF_TRANSFER); - /* release the read locks we have on the channels */ - switch_core_session_rwunlock(originator_session); - switch_core_session_rwunlock(originatee_session); - /* change the states and let the chips fall where they may */ switch_channel_set_state(originator_channel, CS_TRANSMIT); switch_channel_set_state(originatee_channel, CS_TRANSMIT); + /* release the read locks we have on the channels */ + switch_core_session_rwunlock(originator_session); + switch_core_session_rwunlock(originatee_session); + status = SWITCH_STATUS_SUCCESS; while (switch_channel_get_state(originatee_channel) < CS_HANGUP && switch_channel_test_flag(originatee_channel, CF_TAGGED)) {