ref(JitsiConference): move sendTones impl to TPC (#983)
Moves sendTones implementation to TraceablePeerConnection. It will be
responsible for creating/storing a DTMFSender. JitsiConference will
use the currently active TraceablePeerConnection to send the tones.
This fixes a bug where DTMF tones can not be sent after
JingleSessionPC/TraceablePeerConnection instance changes.
The JitsiDTMFManager instance was referencing invalid PeerConnection.
fix(JitsiConference): decline P2P offer if should not be in P2P
The client will reject P2P session-initiate if the conditions which
allow for P2P session to start are not met(there more or less than 2
human participants in the call).
Partially reverts 24bda8e and uses domain/roomname to report to cs.
To be sure we always report room name in small case and as mobile and jigasi report this way it will take time for them to adopt which leads to wrong stats.
feat(xmpp): allow setting resource on room jid (#940)
This functionality is being brought back for apps
that use ljm for its prosody logic but not for
video conferencing, ie Jitsi-Meet Spot. The desired
use is for Spot-TVs to be identifiable by their
jid alone and for the resource to be the part
that identifies them.
* Updates kicked event to inform local and remote kicks and who it affects
* Parses actor from MuteIQ and adds participant info to mute track event.
* Fixes emitting both events.
* Fixes comments.
feat(JitsiConference): delay the ICE failed notification
Because it's possible to go back from ICE FAILED state to CONNECTED it's
better to give it some time until the XMPP connection recovers and only
if they ICE does not recover in time send the ICE failed notification
to Jicofo. It's done by sending a ping to the XMPP server and checking
the ICE after 2 seconds past the ping successful response.
Make the client send ICE failed notification to let Jicofo know
that the ICE connection with the bridge has failed. It can then
re-create the channels and send new transport in the
'transport-replace' message to give it another try.
Also adds a bridge session ID so that Jicofo can discard outdated
requests. When a bridge dies multiple clients may send ICE failed
notifications at the same time. Jicofo will detect bridge failure
when processing the first one and it must not act on the following
requests for the broken bridge session which is no longer current.
A bridge session ID will be sent in new 'bridge-session' XML element
which is part of either 'session-initiate' or 'transport-replace'
message. The server's region is moved to this element as well as
it's part of a bridge session.
Fix: Old JitsiConference instance remains listening on incoming calls… (#858)
* Fix: Old JitsiConference instance remains listening on incoming calls after leave - rejoin to same room
* Remove all listeners added by setupXMPPListeners
Handles private messages received by speakerstats component.
Updates speakers stats with values received by the spealerstats component, all the logic is activate only in case we discover speakerstats component address from disco-info and the incoming message is coming from that component.
The code for handling device availability has been disabled for a long time,
plus it's ill named since it represents 2 abstractions: lack of permissions and
lack of devices.
Time for it to rest in the git graveyard.
Exports additional statistics through ConnectionQuality (#813)
* feat: Read the server region from Jingle and broadcast it with statistics.
* feat: Adds the bridge count to local "statistics", refactors conference-properties.
* fix: Emits the conference properties with the event, small fixes.
* ref: Orders the imports alphabetically.
As described by @virtuacoplenny:
[T]he ordering is based on import path, not import name, with different
file depths being grouped together, node modules being grouped together
at the top.
* fix: Keeps JitsiConference#properties always defined.
* fix: Does not fire an event when the argument is undefined.
ref(recording): change implementation to match VideoSIPGW (#769)
* ref(recording): change implementation to match VideoSIPGW
VideoSIPGW takes in a chat room and uses instance variables
on the chat room. RecordingManager has been changed to
mirror this approach because of the case where jitsi is
deployed on a domain requiring authentication. In that
case, the initial chat room is created and fails, a
new chat room (connection) is created for authentication,
authentication is put onto the failed chat room, and the
failed chat room is used. As such, recordingManager
should not be tied to chat room creation itself but
rather tied to the first chat room.
* squash: use git mv to detect capitalization change
feat(recording): frontend logic can support live streaming and recording (#741)
* feat(recording): frontend logic can support live streaming and recording
Instead of either live streaming or recording, now both can live together.
The changes to facilitate such include the following:
- Remove the old recording.js module which allowed one recording at a time.
- Remove events for live stream url changes as the url is now part of a
sesssion and not fired independently.
- Availability of sipgw and recording are gone. Instead sessions have a
failure reason. For sipgw sessions, store that failure and emit it to
listeners.
- Create a new recordingManager singleton that can start/stop sessions
and handle updating known state of those sessions. Known state is
emitted through one event.
- Create a JibriSession model to encapsulate state of a session.
* update comments, use map to store sessions
* always pass in focusmucjid
* try to fix jibrisession docs and remove default null
feat: Exposes sending JSON payload through XMPP. (#723)
* feat: Exposes sending JSON payload through XMPP.
Incudes only the payload when firing events for JSON trannsported
through XMPP.
* squash: Addresses feedback.
* squash: Addresses more feedback.
feat(recording): show the YouTube live stream URL (#736)
* feat(recording): show the YouTube live stream URL
- Pass you_tube_broadcast_id to Jibri so it can create a
YouTube link for the live stream.
- Emit the liveStreamViewURL (the YouTube link) when it
is received from the participant doing the recording.
* set member.liveStreamViewURL only when truthy
Will emit CONNECTION_ESTABLISHED event to fill up the gap where the lib
users are not able to tell whether or not the connection has been
established if there were no interrupted/restored events emitted.