New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Change onssrcconflict event in RTCRtpSender by exception #448
Comments
More over, if we move to exceptions, this would cause the method call to fail, so we can rollback changes and leave the RTPSender on same state as before the method call, avoiding to call BYE and terminate the stream. |
I don't know any implementation (yet) that detects and throws the exception. We do need to be clear when this can happen. I don't want to have specialized exceptions needlessly or different exceptions for the same event needlessly. This is a very problematic thing for the sender because of multiple reasons:
So... we do have some clarifying to do on how / when this is supposed to occur... |
LOL
Except a Promise is not sufficient... This can also happen later after send(...) is called by attaching a sender to a transport after send is called that already has another sender with the same ssrc. |
|
@ibc I would prefer to just event ssrc conflicts; it's such a rare use case and I seriously doubt many are going to implement or concern themselves with it. |
If somebody gets a sending SSRC conflict he deserves ugly things to happen. |
Indeed as @aboba adds in the PR, according to the rtp specification, ssrc conflict may happenbetween the local ssrcs and the remote ones. |
The next text states that for send() and receive(), "SSRC misusage results in an InvalidParameters exception." The onssrcconflict event handler "is fired if an SSRC conflict is detected within the RTP session." As Robin noted, there are no existing implementations of the onssrcconflict event handler. |
Went through the specification and found additional areas to clarify. There may be additional clarifications needed. |
Resolved and clarified in PR #459 |
Currently we have an onssrcconflict in the RTCRtpSender, but I fail to see which situations would cause it to be triggered.
AFAIK the only way of having an ssrc conflict is by assigning the same ssrc to two different RTPSender on same transport, or having two different encodings with same ssrc. Or when changing a sender from one transport to another which already had another RTPSender using that same ssrc.
This can only be triggered by an API method call (either
RTCRtpSender.send()
orRTCRtpSender.setTransport()
) so IMHO it is much better to throw an exception in this case (an InvalidParameter exception forsend()
and maybe a new SSRConflict exception forsetTranspor()
), that triggering an event.The text was updated successfully, but these errors were encountered: