Closed Bug 1298991 Opened 8 years ago Closed 8 years ago

nICEr creates duplicated prflx candidate pairs

Categories

(Core :: WebRTC: Networking, defect, P2)

defect

Tracking

()

RESOLVED FIXED
mozilla51
Tracking Status
firefox51 --- fixed

People

(Reporter: drno, Assigned: drno)

Details

Attachments

(1 file)

      No description provided.
backlog: --- → webrtc/webaudio+
Rank: 25
Comment on attachment 8786141 [details]
Bug 1298991: only create candidate pairs from STUN response when needed.

https://reviewboard.mozilla.org/r/75104/#review73170

::: media/mtransport/third_party/nICEr/src/ice/ice_candidate_pair.c:261
(Diff revision 2)
>               it probably matches one of our candidates */
>  
>            cand=TAILQ_FIRST(&pair->local->component->candidates);
>            while(cand){
> -            if(!nr_transport_addr_cmp(&cand->addr,&pair->stun_client->results.ice_binding_response.mapped_addr,NR_TRANSPORT_ADDR_CMP_MODE_ALL))
> +            if(!nr_transport_addr_cmp(&cand->addr,&pair->stun_client->results.ice_binding_response.mapped_addr,NR_TRANSPORT_ADDR_CMP_MODE_ALL)) {
> +              r_log(LOG_ICE,LOG_DEBUG,"ICE-PEER(%s): found another candidate %s", pair->pctx->label,cand->addr.as_string);

This log string could be better. Maybe something like "found pre-existing local candidate for mapped address %s"

::: media/mtransport/third_party/nICEr/src/ice/ice_candidate_pair.c:284
(Diff revision 2)
> +          } else {
> +            /* Check if we have a pair for this candidate already. */
> +            orig_pair=pair;
> +            if(r=nr_ice_component_find_pair(cand, pair->remote, &pair)) {
> +              r_log(LOG_ICE,LOG_DEBUG,"ICE-PEER(%s): no pair exists for %s and %s", pair->pctx->label,cand->addr.as_string, pair->remote->addr.as_string);
> +              pair=orig_pair;
> +              orig_pair=0;
> +            }

This could be easier to read, especially if we do a little refactoring to make this something like |pair| and |actual_pair|.

::: media/mtransport/third_party/nICEr/src/ice/ice_candidate_pair.c:689
(Diff revision 2)
> +int nr_ice_candidate_pair_find(nr_ice_cand_pair_head *head,
> +  nr_ice_candidate *lcand, nr_ice_candidate *rcand, nr_ice_cand_pair **pair)

This would make more sense as a nr_ice_media_stream_ function, probably.

::: media/mtransport/third_party/nICEr/src/ice/ice_component.c:1538
(Diff revision 2)
>  
>      return(0);
>    }
>  
>  
> -int nr_ice_component_insert_pair(nr_ice_component *pcomp, nr_ice_cand_pair *pair)
> +int nr_ice_component_insert_pair(nr_ice_cand_pair *pair)

Let's not do this. If we want, we could maybe make this an nr_ice_candidate_pair_ function.
Comment on attachment 8786141 [details]
Bug 1298991: only create candidate pairs from STUN response when needed.

https://reviewboard.mozilla.org/r/75104/#review73700
Attachment #8786141 - Flags: review?(docfaraday) → review+
Pushed by drno@ohlmeier.org:
https://hg.mozilla.org/integration/autoland/rev/0f6e07e5c211
only create candidate pairs from STUN response when needed. r=bwc
https://hg.mozilla.org/mozilla-central/rev/0f6e07e5c211
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla51
Blocks: 1305965
No longer blocks: 1305965
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: