From 3fbb709e33326cb9657babaf012530035cd0795f Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 2 Apr 2008 20:53:13 +0000 Subject: [PATCH] update git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@8006 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/include/switch_types.h | 3 ++- src/switch_rtp.c | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/include/switch_types.h b/src/include/switch_types.h index 932d39d70d..4c91b79bd6 100644 --- a/src/include/switch_types.h +++ b/src/include/switch_types.h @@ -398,7 +398,8 @@ typedef enum { SWITCH_RTP_FLAG_AUTO_CNG = (1 << 15), SWITCH_RTP_FLAG_SECURE_SEND_RESET = (1 << 16), SWITCH_RTP_FLAG_SECURE_RECV_RESET = (1 << 17), - SWITCH_RTP_FLAG_PROXY_MEDIA = (1 << 18) + SWITCH_RTP_FLAG_PROXY_MEDIA = (1 << 18), + SWITCH_RTP_FLAG_SHUTDOWN = (1 << 19) } switch_rtp_flag_t; diff --git a/src/switch_rtp.c b/src/switch_rtp.c index d29a681bd7..3be38331d1 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -862,13 +862,12 @@ SWITCH_DECLARE(uint8_t) switch_rtp_ready(switch_rtp_t *rtp_session) { uint8_t ret; - if (!rtp_session || !rtp_session->flag_mutex) { + if (!rtp_session || !rtp_session->flag_mutex || switch_test_flag(rtp_session, SWITCH_RTP_FLAG_SHUTDOWN)) { return 0; } switch_mutex_lock(rtp_session->flag_mutex); - ret = (rtp_session != NULL && - switch_test_flag(rtp_session, SWITCH_RTP_FLAG_IO) && rtp_session->sock && rtp_session->remote_addr && rtp_session->ready == 2) ? 1 : 0; + ret = (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_IO) && rtp_session->sock && rtp_session->remote_addr && rtp_session->ready == 2) ? 1 : 0; switch_mutex_unlock(rtp_session->flag_mutex); return ret; @@ -883,7 +882,7 @@ SWITCH_DECLARE(void) switch_rtp_destroy(switch_rtp_t **rtp_session) return; } - switch_mutex_lock((*rtp_session)->flag_mutex); + switch_set_flag_locked((*rtp_session), SWITCH_RTP_FLAG_SHUTDOWN); READ_INC((*rtp_session)); WRITE_INC((*rtp_session)); @@ -893,6 +892,7 @@ SWITCH_DECLARE(void) switch_rtp_destroy(switch_rtp_t **rtp_session) READ_DEC((*rtp_session)); WRITE_DEC((*rtp_session)); + switch_mutex_lock((*rtp_session)->flag_mutex); switch_rtp_kill_socket(*rtp_session);