mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-03-06 02:22:56 +00:00
fix race condition on destroying signaling thread in h323 library
This commit is contained in:
parent
6fbfff0f91
commit
c22aac0eac
src/mod/endpoints/mod_h323
@ -1,3 +1,4 @@
|
|||||||
|
fix race condition on destroying signaling thread in h323 library
|
||||||
Adds an extra switch_rtp_destroy or switch_rtp_release_port when a session ends
|
Adds an extra switch_rtp_destroy or switch_rtp_release_port when a session ends
|
||||||
- to make sure the port is returned to FS. thx to Peter Olsson.
|
- to make sure the port is returned to FS. thx to Peter Olsson.
|
||||||
fix issues with Progress message type if pre_answer enabled
|
fix issues with Progress message type if pre_answer enabled
|
||||||
|
@ -1,9 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
* FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
|
* H323 endpoint interface for Freeswitch Modular Media Switching Software Library /
|
||||||
* Copyright (C) 2005-2011, Anthony Minessale II <anthm@freeswitch.org>
|
* Soft-Switch Application
|
||||||
*
|
*
|
||||||
* Version: MPL 1.1
|
* Version: MPL 1.1
|
||||||
*
|
*
|
||||||
|
* Copyright (c) 2010 Ilnitskiy Mixim (max.h323@gmail.com)
|
||||||
|
* Copyright (c) 2010 Georgiewskiy Yuriy (bottleman@icf.org.ru)
|
||||||
|
*
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
* The contents of this file are subject to the Mozilla Public License Version
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||||
* the License. You may obtain a copy of the License at
|
* the License. You may obtain a copy of the License at
|
||||||
@ -14,6 +17,11 @@
|
|||||||
* for the specific language governing rights and limitations under the
|
* for the specific language governing rights and limitations under the
|
||||||
* License.
|
* License.
|
||||||
*
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
* The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
|
* The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
|
||||||
*
|
*
|
||||||
* The Initial Developer of the Original Code is
|
* The Initial Developer of the Original Code is
|
||||||
@ -24,7 +32,7 @@
|
|||||||
*
|
*
|
||||||
* mod_h323.cpp -- H323 endpoint
|
* mod_h323.cpp -- H323 endpoint
|
||||||
*
|
*
|
||||||
* Version 0.0.56
|
* Version 0.0.57
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//#define DEBUG_RTP_PACKETS
|
//#define DEBUG_RTP_PACKETS
|
||||||
@ -708,6 +716,7 @@ FSH323Connection::FSH323Connection(FSH323EndPoint& endpoint, H323Transport* tran
|
|||||||
|
|
||||||
h323_private_t *tech_pvt = (h323_private_t *) switch_core_session_alloc(m_fsSession, sizeof(*tech_pvt));
|
h323_private_t *tech_pvt = (h323_private_t *) switch_core_session_alloc(m_fsSession, sizeof(*tech_pvt));
|
||||||
tech_pvt->me = this;
|
tech_pvt->me = this;
|
||||||
|
tech_pvt->active_connection = true;
|
||||||
switch_core_session_set_private(m_fsSession, tech_pvt);
|
switch_core_session_set_private(m_fsSession, tech_pvt);
|
||||||
|
|
||||||
switch_mutex_init(&tech_pvt->flag_mutex, SWITCH_MUTEX_NESTED, switch_core_session_get_pool(m_fsSession));
|
switch_mutex_init(&tech_pvt->flag_mutex, SWITCH_MUTEX_NESTED, switch_core_session_get_pool(m_fsSession));
|
||||||
@ -748,8 +757,9 @@ FSH323Connection::~FSH323Connection()
|
|||||||
} else if (m_RTPlocalPort) {
|
} else if (m_RTPlocalPort) {
|
||||||
switch_rtp_release_port((const char *)m_RTPlocalIP.AsString(), m_RTPlocalPort);
|
switch_rtp_release_port((const char *)m_RTPlocalIP.AsString(), m_RTPlocalPort);
|
||||||
}
|
}
|
||||||
|
|
||||||
tech_pvt->me = NULL;
|
tech_pvt->me = NULL;
|
||||||
|
tech_pvt->active_connection = false;
|
||||||
// switch_mutex_unlock(tech_pvt->h323_mutex);
|
// switch_mutex_unlock(tech_pvt->h323_mutex);
|
||||||
// switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,"------------->h323_mutex_unlock\n");
|
// switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,"------------->h323_mutex_unlock\n");
|
||||||
}
|
}
|
||||||
@ -2387,6 +2397,9 @@ static switch_status_t on_hangup(switch_core_session_t *session)
|
|||||||
switch_mutex_lock(tech_pvt->h323_mutex);
|
switch_mutex_lock(tech_pvt->h323_mutex);
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,"------------->h323_mutex_unlock\n");
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,"------------->h323_mutex_unlock\n");
|
||||||
switch_mutex_unlock(tech_pvt->h323_mutex);
|
switch_mutex_unlock(tech_pvt->h323_mutex);
|
||||||
|
while (tech_pvt->active_connection){
|
||||||
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Wait clear h323 connection\n");
|
||||||
|
h_timer(1);
|
||||||
|
}
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
* FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
|
* H323 endpoint interface for Freeswitch Modular Media Switching Software Library /
|
||||||
* Copyright (C) 2005-2011, Anthony Minessale II <anthm@freeswitch.org>
|
* Soft-Switch Application
|
||||||
*
|
*
|
||||||
* Version: MPL 1.1
|
* Version: MPL 1.1
|
||||||
*
|
*
|
||||||
|
* Copyright (c) 2010 Ilnitskiy Mixim (max.h323@gmail.com)
|
||||||
|
* Copyright (c) 2010 Georgiewskiy Yuriy (bottleman@icf.org.ru)
|
||||||
|
*
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
* The contents of this file are subject to the Mozilla Public License Version
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||||
* the License. You may obtain a copy of the License at
|
* the License. You may obtain a copy of the License at
|
||||||
@ -14,6 +17,11 @@
|
|||||||
* for the specific language governing rights and limitations under the
|
* for the specific language governing rights and limitations under the
|
||||||
* License.
|
* License.
|
||||||
*
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
* The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
|
* The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
|
||||||
*
|
*
|
||||||
* The Initial Developer of the Original Code is
|
* The Initial Developer of the Original Code is
|
||||||
@ -24,7 +32,8 @@
|
|||||||
*
|
*
|
||||||
* mod_h323.h -- H323 endpoint
|
* mod_h323.h -- H323 endpoint
|
||||||
*
|
*
|
||||||
*/
|
* Version 0.0.57
|
||||||
|
*/
|
||||||
|
|
||||||
#if defined(__GNUC__) && defined(HAVE_VISIBILITY)
|
#if defined(__GNUC__) && defined(HAVE_VISIBILITY)
|
||||||
#pragma GCC visibility push(default)
|
#pragma GCC visibility push(default)
|
||||||
@ -184,6 +193,7 @@ typedef struct {
|
|||||||
switch_mutex_t *h323_io_mutex;
|
switch_mutex_t *h323_io_mutex;
|
||||||
|
|
||||||
FSH323Connection *me;
|
FSH323Connection *me;
|
||||||
|
bool active_connection;
|
||||||
char *token;
|
char *token;
|
||||||
} h323_private_t;
|
} h323_private_t;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user