save last sent id for validation later

This commit is contained in:
Anthony Minessale 2013-04-10 11:27:04 -05:00
parent d7c34c7e1f
commit 455a76434c

View File

@ -181,6 +181,7 @@ typedef struct {
uint8_t rready; uint8_t rready;
int missed_count; int missed_count;
int flips; int flips;
char last_sent_id[12];
} switch_rtp_ice_t; } switch_rtp_ice_t;
struct switch_rtp; struct switch_rtp;
@ -715,7 +716,9 @@ static switch_status_t ice_out(switch_rtp_t *rtp_session, switch_rtp_ice_t *ice)
packet = switch_stun_packet_build_header(SWITCH_STUN_BINDING_REQUEST, NULL, buf); packet = switch_stun_packet_build_header(SWITCH_STUN_BINDING_REQUEST, NULL, buf);
switch_stun_packet_attribute_add_username(packet, ice->ice_user, (uint16_t)strlen(ice->ice_user)); switch_stun_packet_attribute_add_username(packet, ice->ice_user, (uint16_t)strlen(ice->ice_user));
switch_set_string(ice->last_sent_id, packet->header.id);
//if (ice->pass && ice->type == ICE_GOOGLE_JINGLE) { //if (ice->pass && ice->type == ICE_GOOGLE_JINGLE) {
// switch_stun_packet_attribute_add_password(packet, ice->pass, (uint16_t)strlen(ice->pass)); // switch_stun_packet_attribute_add_password(packet, ice->pass, (uint16_t)strlen(ice->pass));
//} //}
@ -861,6 +864,8 @@ static void handle_ice(switch_rtp_t *rtp_session, switch_rtp_ice_t *ice, void *d
} }
if ((ice->type & ICE_VANILLA)) { if ((ice->type & ICE_VANILLA)) {
if (!ok) ok = !strcmp(packet->header.id, ice->last_sent_id);
if (!ok && ice == &rtp_session->ice && rtp_session->rtcp_ice.ice_params && pri && if (!ok && ice == &rtp_session->ice && rtp_session->rtcp_ice.ice_params && pri &&
*pri == rtp_session->rtcp_ice.ice_params->cands[rtp_session->rtcp_ice.ice_params->chosen[1]][1].priority) { *pri == rtp_session->rtcp_ice.ice_params->cands[rtp_session->rtcp_ice.ice_params->chosen[1]][1].priority) {
ice = &rtp_session->rtcp_ice; ice = &rtp_session->rtcp_ice;
@ -955,7 +960,6 @@ static void handle_ice(switch_rtp_t *rtp_session, switch_rtp_ice_t *ice, void *d
ice->rready = 0; ice->rready = 0;
} }
if (ok || !ice->rready) { if (ok || !ice->rready) {
if ((packet->header.type == SWITCH_STUN_BINDING_RESPONSE)) { if ((packet->header.type == SWITCH_STUN_BINDING_RESPONSE)) {
if (rtp_session->flags[SWITCH_RTP_FLAG_RTCP_MUX]) { if (rtp_session->flags[SWITCH_RTP_FLAG_RTCP_MUX]) {