Some of the participants who join a call get this error in their console log and after this, Strophe removes p2p handlers. Thus, Jicofo signals every participant that a new participant has joined, but is unable to sync over p2p. This makes the affected user’s thumbnail go blank and without any video or audio. Any other event such as the participant leaving the room, etc does not go through. Even incoming messages from the server such as focus changed status for a participant ID results in an error because the recipient is out of sync. This results in a ghost user. There is no predictable nature that I could observe. I tried opening multiple tabs on different browsers but this happens regardless, and randomly for some users but works well for others.
I’m running a standalone Jitsi server with Meet, Jicofo, Prosody, and JVB running on the same machine. I have a separate TURN server running on 443. ICE works as expected. I was using BOSH and then switched to websockets but this error has persisted.
I checked my TURN server logs and found that a ‘Failed to construct RTCPeerConnection’ happens right after:
realm <mydomain.com> user <>: incoming packet message processed, error 401: Unauthorized
I wonder if this is normal behavior. Logs tell me that every lookup with a user ID succeeds but the one without a user ID fails followed by the DOMException about failing to construct an RTCPeerConnection.
w3c-test.org tells me that this exception is expected behavior for turns and an empty username string: Ref http://w3c-test.org/webrtc/RTCConfiguration-iceServers.html
Is this something to do with the client trying to construct an RTCPeerConnection before receiving a user ID from Prosody?
Meanwhile, I don’t see any errors on my Prosody, JVB, and Jicofo logs. I’m kinda stuck with this for two days now and have tried several options so far. Has someone else also seen this issue before (and were able to resolve it)?
Gists with console and TURN log messages: https://gist.github.com/mavenik/6543dc5b7db40fe38a8ceba1b47a1712