let relay work if its the only option

This commit is contained in:
Anthony Minessale 2014-05-09 01:14:48 +05:00
parent 31069f33a2
commit be56bbb7ae
1 changed files with 20 additions and 6 deletions

View File

@ -816,6 +816,8 @@ static void handle_ice(switch_rtp_t *rtp_session, switch_rtp_ice_t *ice, void *d
int ok = 1; int ok = 1;
uint32_t *pri = NULL; uint32_t *pri = NULL;
int is_rtcp = ice == &rtp_session->rtcp_ice; int is_rtcp = ice == &rtp_session->rtcp_ice;
uint32_t elapsed;
if (!switch_rtp_ready(rtp_session) || zstr(ice->user_ice) || zstr(ice->ice_user)) { if (!switch_rtp_ready(rtp_session) || zstr(ice->user_ice) || zstr(ice->ice_user)) {
return; return;
@ -841,6 +843,12 @@ static void handle_ice(switch_rtp_t *rtp_session, switch_rtp_ice_t *ice, void *d
} }
if (!rtp_session->last_stun) {
elapsed = 0;
} else {
elapsed = (unsigned int) ((switch_micro_time_now() - rtp_session->last_stun) / 1000);
}
end_buf = buf + ((sizeof(buf) > packet->header.length) ? packet->header.length : sizeof(buf)); end_buf = buf + ((sizeof(buf) > packet->header.length) ? packet->header.length : sizeof(buf));
rtp_session->last_stun = switch_micro_time_now(); rtp_session->last_stun = switch_micro_time_now();
@ -945,7 +953,6 @@ static void handle_ice(switch_rtp_t *rtp_session, switch_rtp_ice_t *ice, void *d
if (ok) { if (ok) {
ice->missed_count = 0; ice->missed_count = 0;
} else { } else {
uint32_t elapsed = (unsigned int) ((switch_micro_time_now() - rtp_session->last_stun) / 1000);
switch_rtp_ice_t *icep[2] = { &rtp_session->ice, &rtp_session->rtcp_ice }; switch_rtp_ice_t *icep[2] = { &rtp_session->ice, &rtp_session->rtcp_ice };
switch_port_t port = 0; switch_port_t port = 0;
char *host = NULL; char *host = NULL;
@ -1114,17 +1121,24 @@ static void handle_ice(switch_rtp_t *rtp_session, switch_rtp_ice_t *ice, void *d
ice->missed_count = 0; ice->missed_count = 0;
ice->rready = 1; ice->rready = 1;
for (i = 0; i <= ice->ice_params->cand_idx; i++) { for (i = 0; i <= ice->ice_params->cand_idx; i++) {
if (ice->ice_params->cands[i][ice->proto].con_port == port) { if (ice->ice_params->cands[i][ice->proto].con_port == port) {
if (!strcmp(ice->ice_params->cands[i][ice->proto].con_addr, host) && if (!strcmp(ice->ice_params->cands[i][ice->proto].con_addr, host) &&
!strcmp(ice->ice_params->cands[i][ice->proto].cand_type, "relay")) { !strcmp(ice->ice_params->cands[i][ice->proto].cand_type, "relay")) {
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(rtp_session->session), SWITCH_LOG_WARNING, if (elapsed != 0 && elapsed < 5000) {
"Skiping RELAY stun/%s/dtls port change from %s:%u to %s:%u\n", is_rtcp ? "rtcp" : "rtp", switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(rtp_session->session), SWITCH_LOG_WARNING,
host2, port2, "Skiping RELAY stun/%s/dtls port change from %s:%u to %s:%u\n", is_rtcp ? "rtcp" : "rtp",
host, port); host2, port2,
host, port);
goto end;
}
goto end; break;
} }
} }
} }