fix(strophe.jingle.js): exception on ICE config modification
If ICE config object gets modified while there's any native
PeerConnection instance holding a reference, it will cause
an exception about final object being modified.
It happens when trying to reconnect XMPP Websocket on RN and
is caused by the fact that new TURN config is fetched after
the connection is re-established.
fix(xmpp): clear any last strophe errors on reconnect
If user experiences any failed reconnect during the entire
session, even if followed by a success, then
the "connectionFailed" flag will trigger
JitsiConnectionEvents.CONNECTION_FAILED on hang up while
processing the disconnected transition.
When modifying the room protection (setting or unsetting a password), the muc#roomconfig_passwordprotectedroom should always be defined. This fixes issue #512.
fix(unified-plan): use RTCRtpSender.replaceTrack for mute/unmute/replace operations
Trigger renegotation only when negotiationneeded event is fired on the browser.
Do not disable simulcast for screensharing in unified plan.
Fix the order of the simulcast streams for Firefox
ref(XmppConnection): enable XMPP resume by default if supported
The XMPP stream resumption will enable automatically if supported by
Prosody on Websocket connections. Pass the 'enableWebsocketResume'
config option set to 'false' to disable.
Websocket keep alive is HTTP GET request sent on the service URL passed
to Strophe. It is used to keep the stick tables alive. The feature comes
in enabled by default whenever Websocket are used. Pass
'websocketKeepAlive' config option set to -1 to disable.
See the code for more details about the default interval value.
ref(JingleSessionPC): send source update upon reconnect
Given that the XMPP connection is able to reconnect after a drop, now
the jingle session needs to hold off any updates that have to be sent
while the signalling is down. Send the update upon reconnect to sync
Jicofo and JVB with the client's source description.
fix(XmppConnection): use status instead of the connected field
The connected flag is flipped to true as soon as transport connection is
established by Strophe(such as WebSocket TCP), but it doesn't mean that
the connection is ready to send stanzas yet.
This prevents from accessing Strophe internals directly and allows to
block 'send' calls while disconnected. The latter breaks the stream
resume logic by putting stanzas onto the send queue.
TODO make jitsi strophe plugins use the XmppConnection wrapper whenever
possible instead of interacting with the Strophe.Connection directly.
This way it's easier to figure out which parts of the disconnect method are about
cleaning up the connection and the reasons on why it's important can be put in
the JDoc of this method.