return SWITCH_STATUS_FALSE;
}
sdp_port = tech_pvt->local_sdp_video_port;
+
if (tech_pvt->profile->extrtpip) {
if (sofia_glue_ext_address_lookup(&ip, &sdp_port, tech_pvt->profile->extrtpip, switch_core_session_get_pool(tech_pvt->session)) !=
sofia_glue_check_video_codecs(tech_pvt);
+ if (!tech_pvt->local_sdp_video_port) {
+ sofia_glue_tech_choose_video_port(tech_pvt);
+ }
+
if (switch_test_flag(tech_pvt, TFLAG_VIDEO) && tech_pvt->video_rm_encoding) {
flags = (switch_rtp_flag_t) (SWITCH_RTP_FLAG_USE_TIMER | SWITCH_RTP_FLAG_AUTOADJ |
SWITCH_RTP_FLAG_DATAWAIT | SWITCH_RTP_FLAG_NOBLOCK | SWITCH_RTP_FLAG_RAW_WRITE);
if (switch_rtp_ready(tech_pvt->video_rtp_session)) {
switch_channel_set_flag(tech_pvt->channel, CF_VIDEO);
+ } else {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "VIDEO RTP REPORTS ERROR: [%s]\n", switch_str_nil(err));
+ switch_channel_hangup(tech_pvt->channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
+ goto end;
}
}
} else {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "RTP REPORTS ERROR: [%s]\n", switch_str_nil(err));
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "AUDIO RTP REPORTS ERROR: [%s]\n", switch_str_nil(err));
switch_channel_hangup(tech_pvt->channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
switch_clear_flag_locked(tech_pvt, TFLAG_IO);
status = SWITCH_STATUS_FALSE;
*err = NULL;
+ if (switch_strlen_zero(host) || !port) {
+ *err = "Address Error";
+ goto done;
+ }
+
if (switch_sockaddr_info_get(&rtp_session->local_addr, host, SWITCH_UNSPEC, port, 0, rtp_session->pool) != SWITCH_STATUS_SUCCESS) {
*err = "Local Address Error!";
goto done;
break;
}
- if (++x > 500) {
+ if (++x > 1000) {
break;
}
switch_yield(1000);
}
switch_socket_opt_set(new_sock, SWITCH_SO_NONBLOCK, FALSE);
- if (!ilen) {
- *err = "Send myself a packet failed!";
- goto done;
- }
#endif
old_sock = rtp_session->sock;
switch_memory_pool_t *pool)
{
switch_rtp_t *rtp_session = NULL;
-
- if (switch_rtp_create(&rtp_session, payload, samples_per_interval, ms_per_packet, flags, timer_name, err, pool) != SWITCH_STATUS_SUCCESS) {
+
+ if (switch_strlen_zero(rx_host)) {
+ *err = "Missing local host";
+ goto end;
+ }
+
+ if (!rx_port) {
+ *err = "Missing local port";
+ goto end;
+ }
+
+ if (switch_strlen_zero(tx_host)) {
+ *err = "Missing remote host";
+ goto end;
+ }
+
+ if (!tx_port) {
+ *err = "Missing local port";
goto end;
}
- if (switch_rtp_set_remote_address(rtp_session, tx_host, tx_port, err) != SWITCH_STATUS_SUCCESS) {
- rtp_session = NULL;
+ if (switch_rtp_create(&rtp_session, payload, samples_per_interval, ms_per_packet, flags, timer_name, err, pool) != SWITCH_STATUS_SUCCESS) {
goto end;
}
rtp_session = NULL;
}
+ if (switch_rtp_set_remote_address(rtp_session, tx_host, tx_port, err) != SWITCH_STATUS_SUCCESS) {
+ rtp_session = NULL;
+ goto end;
+ }
+
end:
if (rtp_session) {