[Nice] SIP forking?

Rémi Denis-Courmont remi.denis-courmont at nokia.com
Mon Jun 23 06:25:33 PDT 2008

Le Thursday 19 June 2008 22:22:47 ext Olivier Crête, vous avez écrit :
> I'm in the process of fixing the candidate-setting API in Farsight2. One
> issue where I am not certain how to proceed is SIP forking, since
> libnice doesn't support it yet.
> I guess one would have to set more than one set of remote candidates and
> do connectivity checks with them before selecting the set that will be
> picked?

Yeah. In theory. This gets really nasty, though. As far as I can tell, you 
would need to map incoming STUN connectivity checks to forked branch based 
solely on the USERNAME, since the source IP/port might not even match any 
known remote candidate. And then you duplicate the role handling state, the 
timers, everything...

I wonder how to cope with a mix of ICE-capable branches and non-ICE-capable 
branches as well... 

> Or would be call set_remote_candidates() with one set of candidates...
> and then if its not the one that's chosen, do a ICE restart and re-set
> the candidates from the chosen partner?

Not simple, but at least much more simple.

> Do we know if other ICE implementation do it and how they do it?

Last time I checked the only other usable ICE implementation was pjsip. I 
don't know how they cope with this, if at all though.

Rémi Denis-Courmont
Maemo Software, Nokia Devices R&D

More information about the Nice mailing list