Issue 174: When is an IceGatherer allowed to prune host, reflexive and relay candidates?

Robin Raymond said: 

"Possible solutions:
(a) IceGatherer is told to "gather()" with a prune timeout, and candidates remain warm until the timeout has completed (and can be optionally extended by gather() again with another future timeout before the last timeout completes)
(b) IceGatherer keeps all host, reflexive and relay candidates "hot" until a "IceGatherer.prune()" method is called where it's now allowed to prune out any non-warm candidates (i.e. candidates that have not sent or received checks / data within a standard ICE consent timeout).
(c) IceGatherer keeps all host, reflexive and relay candidates "hot" so long as a single incomplete IceTransport is attached to the IceGatherer, i.e. keeping the IceGatherer warm could be done by keeping an unused IceTransport around until it's disposed."

[BA] Another option worth considering would be to add an (optional) prune timeout to the IceGatherer constructor.  That way, it would not be necessary to call gather() to begin the gathering process; gathering would start upon construction as it does now.   I realize that there is another potential use of .gather() which is to enable ICE gathering to occur again without changing the password/ufrag.  But that seems like an issue distinct from this one. 

Received on Friday, 6 February 2015 23:47:59 UTC