Skip to content

fix: HPB partial updates no longer drop the call when a participant joins#6087

Open
alauzon wants to merge 6 commits intonextcloud:masterfrom
alauzon:fix/hpb-partial-update-drops-call
Open

fix: HPB partial updates no longer drop the call when a participant joins#6087
alauzon wants to merge 6 commits intonextcloud:masterfrom
alauzon:fix/hpb-partial-update-drops-call

Conversation

@alauzon
Copy link
Copy Markdown

@alauzon alauzon commented Apr 16, 2026

Fixes #5452

Problem

With external signaling (HPB), onParticipantsUpdate delivers partial updates containing only changed participants. The previous code treated both onUsersInRoom (full list) and onParticipantsUpdate (partial update) identically: any participant absent from the list was moved to the left collection.

When a new participant joined via HPB, the local user was not included in the partial update (because the local user didn't change). This caused the local participant to appear in left, which made CallActivity.handleCallParticipantsChanged conclude:

isSelfInCall = false
// → "Most probably a moderator ended the call for all."
hangup(shutDownView = true, endCallForAll = false)

The call was dropped by the Android client as soon as another participant joined.

Fix

processParticipantList now takes a boolean fullList parameter:

  • onUsersInRoom passes fullList=true — absent participants have left (original behaviour)
  • onParticipantsUpdate passes fullList=false — absent participants are still in the call and are moved to unchanged instead of left

handleCallParticipantsChanged builds participantsInCall from joined + updated + unchanged, so the local user stays present, isSelfInCall remains true, and the call is not dropped.

@mahibi
Copy link
Copy Markdown
Collaborator

mahibi commented Apr 17, 2026

thank you @alauzon we will have a closer look soon

@alauzon alauzon force-pushed the fix/hpb-partial-update-drops-call branch from 17cb72d to db74191 Compare April 17, 2026 13:57
…oins

With external signaling (HPB), onParticipantsUpdate delivers partial updates
containing only changed participants. The previous code treated both full lists
(onUsersInRoom) and partial updates (onParticipantsUpdate) identically: any
participant absent from the list was moved to the "left" collection.

When a new participant joined via HPB, the local user was not included in the
partial update. This caused the local participant to appear in "left", which
made CallActivity think a moderator had ended the call for everyone and trigger
hangup().

Fix: processParticipantList now takes a boolean fullList parameter.
- onUsersInRoom passes fullList=true: absent participants have left (unchanged)
- onParticipantsUpdate passes fullList=false: absent participants are still in
  the call and are moved to "unchanged" instead of "left"

Fixes nextcloud#5452

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Alain Lauzon <alauzon@alainlauzon.com>
@alauzon alauzon force-pushed the fix/hpb-partial-update-drops-call branch from db74191 to 481ed68 Compare April 17, 2026 14:01
@mahibi
Copy link
Copy Markdown
Collaborator

mahibi commented Apr 29, 2026

Please excuse the current delays in pull request reviews.
The PR is on our list.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 1, 2026

Hello there,
Thank you so much for taking the time and effort to create a pull request to our Nextcloud project.

We hope that the review process is going smooth and is helpful for you. We want to ensure your pull request is reviewed to your satisfaction. If you have a moment, our community management team would very much appreciate your feedback on your experience with this PR review process.

Your feedback is valuable to us as we continuously strive to improve our community developer experience. Please take a moment to complete our short survey by clicking on the following link: https://cloud.nextcloud.com/apps/forms/s/i9Ago4EQRZ7TWxjfmeEpPkf6

Thank you for contributing to Nextcloud and we hope to hear from you soon!

(If you believe you should not receive this message, you can add yourself to the blocklist.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Call started from talk android gets dropped when a participant joins

2 participants