Skip to content

MCU call stuck on spinner forever when subscriber setup fails ("client_not_found"); requestoffer is never retried #6548

Description

@tareko

Steps to reproduce

Observed live on a real call (Android Talk v24.0.3, HPB + Janus, spreed 24.0.4):

  1. Participant A (Firefox) joins a call but its publisher on the MCU never comes up (e.g. getUserMedia never resolves, or a Janus-side failure)
  2. Participant B (Android) joins the call — its own publisher connects fine
  3. Android sends requestoffer to subscribe to A's stream

Expected behaviour

If subscribing fails, Android retries (with backoff) and/or shows an error state. When A's publisher appears later, B starts receiving the stream.

Actual behaviour

The HPB answers {"type":"error","error":{"code":"client_not_found","message":"No MCU client found to send message to."}} (after the 10 s mcuTimeout). The Android app logs the error and does nothing else: WebSocketInstance.processErrorMessage only handles no_such_session and hello_expected; every other error code is dropped. requestoffer is sent exactly once, when the subscriber PeerConnectionWrapper is constructed (PeerConnectionWrapper.java ctor, hasMCU && "video".equals(videoStreamType) branch) and is never retried. The call UI shows the connecting spinner forever.

The same silent-death happens if the requestoffer response is simply lost during a reconnect — no error is even received.

Device brand and model

Samsung Galaxy S25 Ultra

Android version

16

Nextcloud Talk app version

master

Nextcloud server version

34.0.3

Talk version

24.0.4

Custom Signaling server configured

Yes (specify version in Additional Information)

Custom TURN server configured

Yes

Custom STUN server configured

Yes

Android logs

Client (logcat, 11:32 phone time):

WebSocketInstance: Received error: {"type":"error","error":{"code":"client_not_found","message":"No MCU client found to send message to."}}

Server log

Server (HPB, 08:32 UTC — 10 s after join):


hub.go:2978: Could not create MCU subscriber for session k5l5… to send
  {"type":"requestoffer","sid":"","roomType":"video","payload":null} to o8VN…: context deadline exceeded


The Android publisher itself was fully established (Janus: "DTLS handshake completed", "WebRTC media is now available") — only the subscriber setup failed, and nothing recovered it.

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions