} else {
const char *url = (sofia_glue_transport_has_tls(transport)) ? profile->tls_url : profile->url;
- if (strchr(url, '>')) {
+ if (url && strchr(url, '>')) {
tech_pvt->reply_contact = switch_core_session_sprintf(session, "%s;transport=%s", url, sofia_glue_transport2str(transport));
} else {
tech_pvt->reply_contact = switch_core_session_sprintf(session, "<%s;transport=%s>", url, sofia_glue_transport2str(transport));
SWITCH_DECLARE(void) switch_rtp_destroy(switch_rtp_t **rtp_session)
{
void *pop;
+ switch_socket_t *sock;
if (!switch_rtp_ready(*rtp_session)) {
return;
}
switch_rtp_kill_socket(*rtp_session);
- switch_socket_close((*rtp_session)->sock);
+ sock = (*rtp_session)->sock;
(*rtp_session)->sock = NULL;
+ switch_socket_close(sock);
+
if (switch_test_flag((*rtp_session), SWITCH_RTP_FLAG_VAD)) {
switch_frame_flag_t frame_flags = SFF_NONE;
data[0] = 65;
rtp_session->cn++;
+ switch_mutex_lock(rtp_session->flag_mutex);
rtp_common_write(rtp_session, NULL, (void *) data, 2, rtp_session->cng_pt, 0, &frame_flags);
+ switch_mutex_unlock(rtp_session->flag_mutex);
}
}
this_ts = ntohl(send_msg->header.ts);
- if (rtp_session->sending_dtmf || !this_ts) {
+ if (!switch_rtp_ready(rtp_session) || rtp_session->sending_dtmf || !this_ts) {
send = 0;
}