Skip to content

Pre-call signaling connection creates orphaned Janus VideoRoom that persists throughout the call #1267

Description

@vladopol

When a client connects to the signaling server for an event (calendar-based) room before any call is active, HPB creates a Janus VideoRoom for that session. When the moderator starts the call and HPB establishes a new Janus VideoRoom for the same participant, the original pre-call room is never terminated — leaving two simultaneous publishers active for the same participant for the entire call duration.

Steps to reproduce

  1. Configure a Nextcloud Talk event room (calendar-linked, type 3) with no lobby
  2. Guest opens the room URL before the moderator starts the call — Talk client connects to HPB and HPB creates Janus VideoRoom A
  3. Moderator starts the call; HPB creates Janus VideoRoom B for the guest's active session
  4. Call runs normally, recording is enabled
  5. Inspect Janus MJR output — two simultaneous audio streams exist for the guest

Expected behaviour

HPB should not create a Janus VideoRoom until the client's incall flag is set. If a pre-call room already exists when a new one is created for the same session, the old room must be explicitly terminated.

Actual behaviour

Two Janus VideoRooms for the same participant remain active simultaneously throughout the call. Evidence from MJR timestamps and Nextcloud DB:

Time (relative to call_started) Event
−02:52 Guest Janus VideoRoom A created (signaling connect, no call active, no call_started in DB)
00:00 Moderator → call_started system message
+00:27 Guest Janus VideoRoom B created; call_joined in DB
+32:00 Both rooms still active; call ends

Environment

  • nextcloud-spreed-signaling: c21c347
  • Nextcloud Talk: 23.0.5
  • Janus WebRTC Gateway: 1.4.0
  • Room type: event/scheduled (type 3)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions