Skip to content

Forced reconnections may not be noticed by the clients of other participants when the HPB is not used #7089

@danxuliu

Description

@danxuliu

If the inCall property for the participant who is reconnecting never becomes not in the call other participants would not notice that the participant in fact reconnected (as without HPB the same session ID is used) and then not update their connection with that participant (for example, to stop it if the participant is no longer publishing).

This might be fixed by the second commit (Create and destroy Peers based on call flag changes) in #6934

How to test

  • Delay getting the users for the usersInRoom event (so if a participant leaves and quickly joins again, like in a forced reconnection, the clients will not receive the disconnected state) by adding if ($this->userId) { sleep(5); } before
    $room = $this->manager->getRoomForSession($this->userId, $sessionId);
  • Add audio and video permissions by default in a conversation
  • Start a call as a moderator
  • In a private window, join the call as a guest with audio and/or video
  • Wait until the connection is established (it may take a while due to the delayed signaling messages)
  • In the original window, remove all permissions from the other participant

Result with this pull request

In the original window the other participant is seen as in the call, although without audio or video

Result without this pull request

In the original window the connection is lost with the other participant and never recovered

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions