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;
{
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;
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));
READ_DEC((*rtp_session));
WRITE_DEC((*rtp_session));
+ switch_mutex_lock((*rtp_session)->flag_mutex);
switch_rtp_kill_socket(*rtp_session);