otalk / mod_muc_focus Goto Github PK
View Code? Open in Web Editor NEWProsody + Jingle/COLIBRI = multimedia MUC!
Prosody + Jingle/COLIBRI = multimedia MUC!
currently not handled.
The conference is currently not disposed when sending the jingle session-terminate. This could be done -- worst case by setting all the channels expire to 0.
@emcho is there a way to explicitly destroy a conference?
for video channels, set last-n to the number of channels and adaptive-last-n and adaptive-simulcast to true.
Particularly important for mobile clients.
several data structures are kept with the participants real jid (i.e. stanza.attr.from) in handle_jingle. Probably should not be done that way.
looks like some of the namespaces are registered globally?!
raw:incoming <iq id='0e21b299-5f41-432c-823e-9b4635a77b61' type='result' to='db6833d7-ec9b-4808-b0f0-c8c850b041b1@.../1f787b31-1294-43fb-91a0-1ebf8e4c73bb' from='...'><query xmlns='http://jabber.org/protocol/disco#info'><identity type='im' name='Prosody' category='server'/><feature var='http://jitsi.org/protocol/colibri'/><feature var='urn:xmpp:jingle:1'/><feature var='urn:xmpp:jingle:transports:ice-udp:1'/><feature var='urn:xmpp:jingle:apps:rtp:1'/><feature var='urn:xmpp:jingle:apps:dtls:0'/><feature var='http://jabber.org/protocol/commands'/><feature var='jabber:iq:roster'/><feature var='urn:xmpp:time'/><feature var='jabber:iq:time'/><feature var='jabber:iq:last'/><feature var='urn:xmpp:ping'/><feature var='jabber:iq:version'/><feature var='urn:xmpp:jidprep:0'/><feature var='http://jabber.org/protocol/disco#info'/><feature var='http://jabber.org/protocol/disco#items'/><feature var='msgoffline'/></query></iq>
I hear @bgrozev has something awesome almost working which needs to be mapped as well.
https://github.com/stpeter/mod_muc_focus/blob/master/mod_muc_focus.lua#L225
currently requires a mod_muc which adds stanza and jid to the event.
The stanza is not used even and @daurnimator suggests there is a better way to get the jid.
since some of the tables are based on the occupants nickname, nick changes need to be handled.
see persistent.lib.lua as well
the reliable way to measure a call length is to measure the time between creating the conference creation and the session terminate. That's useful for logging purposes.
we don't want clients to add or remove msid in in their presence.
sending a source-remove and a session-terminate from the same callback does not make much sense.
currently the focus assumes every participant has a session. This isn't always true and some actions (and some counting) needs to be done based on whether a participants has a session
it seems the rejoin is broken since keeping stuff by nick...
to be spec'ed. I think we will use the msid as endpoint.
When receiving a session-terminate the focus needs to expire the channels on the bridge
apparently the destroy_conference lingering can trigger when everyone has left the room already. Need to check.
the bridge can now send <rtcp-mux/> inside of transport which can be mapped to jingle
Since making the minimum number of participants configurable in 079528c the following scenario can happen:
A, B, C are in a conference. C reloads the browser.
What currently happens is that the focus terminates the conference, A and B establish a P2P session, C joins, focus makes a new conference, P2P session between A and B gets terminated.
That is clearly suboptimal. It would be better to allow the conference to linger in this state for ~30 seconds. Start a call-out where the termination currently happens, check the number of participants in the timeout.
Currently, when a member source-adds after the initial accept, the array of sources in participants to sources is overwritten with just the new sources (
mod_muc_focus/mod_muc_focus.lua
Line 1046 in 21d0f9f
Instead, the sources should be added to the table(s) for the participant.
Similarly, when removing streams the ssrc's should be removed so they are not incorrectly sent to future participants.
Needs to check that a source was actually present, or else an empty source-remove is sent.
seen today on beta.talky.io
May 15 16:02:28 mod_websocket debug Websocket received: <iq xmlns="jabber:client" to="[email protected]" type="set" id="1bea51a5-6223-4892-a8bc-dff792539417"><jingle xmlns="urn:xmpp:jingle:1" sid="1b7d5fce9a1a6015" action="session-info"><mute xmlns="urn:xmpp:jingle:apps:rtp:info:1" creator="initiator" name="audio"/><mediastream xmlns="http://andyet.net/xmlns/mmuc" msid="tkNx0DVjMXI59rs8inCAtNn9LCCKStWNYdfE"/></jingle></iq> (384 bytes)
May 15 16:02:28 c2s26e0c20 error Traceback[c2s]: .../lib/prosody/modules/mod_muc_focus/mod_muc_focus.lua:854: attempt to index local 'msids' (a nil value)
stack traceback:
.../lib/prosody/modules/mod_muc_focus/mod_muc_focus.lua:854: in function '?'
/usr/lib/prosody/util/events.lua:67: in function 'fire_event'
/usr/lib/prosody/core/stanza_router.lua:187: in function 'core_post_stanza'
/usr/lib/prosody/core/stanza_router.lua:135: in function 'core_process_stanza'
/usr/lib/prosody/modules/mod_c2s.lua:236: in function 'func'
/usr/lib/prosody/util/async.lua:88: in function </usr/lib/prosody/util/async.lua:86>
just saw this with jvb-564:
2015-11-09 17:09:18.731 SEVERE: [112] org.jitsi.impl.neomedia.transform.dtls.DtlsControlImpl.error() Failed to verify and/or validate a certificate offered over the media path against fingerprints declared over the signaling path! No fingerprints declared over the signaling path!
2015-11-09 17:09:18.732 SEVERE: [112] org.jitsi.impl.neomedia.transform.dtls.TlsServerImpl.error() Failed to verify and/or validate client certificate!
java.io.IOException: No fingerprints declared over the signaling path!
I'm pretty sure I signal the client fingerprint. But before, the bridge was never checking this so this might have gone unnoticed.
see https://github.com/bjc/prosody/blob/master/plugins/mod_pep.lua#L260 for a server-side caps cache (caching is not strictly required but...)
hook muc-config-form and muc-config-submitted -- see persistent.lib.lua in muc/
See jitsi/jitsi-meet@05e0454
-- id is now preferred over endpoint.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.