]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
update
authorAnthony Minessale <anthony.minessale@gmail.com>
Wed, 2 Apr 2008 20:53:13 +0000 (20:53 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Wed, 2 Apr 2008 20:53:13 +0000 (20:53 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@8006 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/include/switch_types.h
src/switch_rtp.c

index 932d39d70d50b2819518e9548bac05f52e1d701a..4c91b79bd6b32eb90935decba2b214e83fa108ef 100644 (file)
@@ -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;
 
 
index d29a681bd73228703b13f1214ba0d529ccc6a591..3be38331d10bc895d62480ee99a2b4085c829396 100644 (file)
@@ -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);