Open Bug 984580 Opened 10 years ago Updated 2 years ago

Fire ICE connection states "completed" when ICE checks have stopped, as well as "closed" when closed to match spec

Categories

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

defect

Tracking

()

People

(Reporter: bwc, Assigned: bwc)

References

(Blocks 2 open bugs)

Details

Attachments

(2 files)

Right now all we support is the connected state, but there is an additional completed state we should be reporting.
Blocks: 970890
Assignee: nobody → docfaraday
So, after giving this a little thought, knowing that ICE is 'completed' is not really possible. At any point, we could receive a new check request, causing us to send a triggered check for a previously failed pair. We could also get a new (high priority) trickle candidate. The only useful thing we can say here (barring a timer we set that permanently disables any more checks from being sent) is whether we currently have any checks scheduled or not, and this can change at any time.

Internally, maybe we should decompose this into a couple of booleans; isChecking and isConnected. The four combinations of these get us the 'failed', 'checking', 'completed', and 'connected' states. Toss in gathering state, (gathering is true, checking and connected both false), and we get 'new' too. A transition from connected or completed back to checking is what disconnected was intended to indicate, I bet; it is not fundamentally different from an ICE perspective from the present 'checking' state. 'closed' looks completely redundant to me.
(In reply to Byron Campen [:bwc] from comment #2)
> So, after giving this a little thought, knowing that ICE is 'completed' is
> not really possible. At any point, we could receive a new check request,
> causing us to send a triggered check for a previously failed pair. We could
> also get a new (high priority) trickle candidate.

There is a last trickle candidate in the protocol, though it isn't
currently supported by nICEr.


> The only useful thing we
> can say here (barring a timer we set that permanently disables any more
> checks from being sent) is whether we currently have any checks scheduled or
> not, and this can change at any time.
> 
> Internally, maybe we should decompose this into a couple of booleans;
> isChecking and isConnected. The four combinations of these get us the
> 'failed', 'checking', 'completed', and 'connected' states. Toss in gathering
> state, (gathering is true, checking and connected both false), and we get
> 'new' too. A transition from connected or completed back to checking is what
> disconnected was intended to indicate, I bet; it is not fundamentally
> different from an ICE perspective from the present 'checking' state.
> 'closed' looks completely redundant to me.
Still relevant?
backlog: --- → webRTC+
Rank: 33
Flags: needinfo?(docfaraday)
Priority: -- → P3
Yes.
Flags: needinfo?(docfaraday)
FYI I noticed yesterday that spec now describes the connection state 'completed' as the combination of connection state reached 'connected' & gathering state reached 'completed'.
I think we should up-prioritize this. We're also missing "closed" state it seems.
Blocks: webrtc_spec
Rank: 33 → 19
Priority: P3 → P1
Summary: We need to report an ICE connection state of completed when ICE checks have stopped → Fire ICE connection states "completed" when ICE checks have stopped, as well as "closed" when closed to match spec
Fippo brought up the good point that this now depends on bug 1318167.
Rank: 19 → 21
Depends on: 1318167
Priority: P1 → P2
Mass change P2->P3 to align with new Mozilla triage process.
Priority: P2 → P3

Bug 1318167 was fixed in 68, so we can reap the rewards by finishing this now.

Rank: 21 → 15
Priority: P3 → P2
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: