Call started from talk android gets dropped when a participant joins
Steps to reproduce
- Start a group chat call from the talk-android app
- In another account, join in the call
Expected behaviour
Call is established between 2 participants
Actual behaviour
Call is dropped by the talk android app, leaving only the other participant in the call
Device brand and model
Samsung Galaxy A16 5G
Android version
15
Nextcloud Talk app version
22.0.2
Nextcloud server version
32
Talk version
22
Custom Signaling server configured
Yes (specify version in Additional Information)
Custom TURN server configured
Yes
Custom STUN server configured
No
Android logs
No response
Server log
Additional information
No response
Does the android app crash at this point? (Then maybe it is related to https://github.com/nextcloud/talk-android/issues/5073 ) What exactly happens with the app when the "Call is dropped"?
Thanks for the response @mahibi
The app just goes 'Something went wrong' and then navigates back to the chat. The chat record just says 'You left the call'. This has been consistent, app doesn't crash or anything.
Similar problem with me. Web to web call is going through and working fine, from mobile web browser or desktop web browser! Talk desktop (windows) calls are going fine. Just the talk android app is dropping the call (shows leaving the call then goes back to the chat view) immediately after joining it.
Talk Mobile App Diagnosis Content:
Meta information
Generation of system report Nov 1, 2025 6:43:45 AM
Phone
Device samsung SM-S938B
Android version 36
Google Play services Google Play services are available
App
App name Nextcloud Talk
App version v22.0.2
Build flavor gplay
Battery settings Battery optimization is ignored, all fine
Notification permissions Notifications are granted
Calls notification channel enabled? Yes
Messages notification channel enabled? Yes
Firebase push token #############
Latest firebase push token generation Oct 31, 2025 6:01:32 PM
Latest firebase push token fetch Nov 1, 2025 6:36:47 AM
Registered users 1
Current account
Server #############
User #############
User status enabled? Yes
Server notification app installed? Yes
Latest push registration at server Nov 1, 2025 6:36:48 AM
Latest push registration at push proxy Nov 1, 2025 6:36:48 AM
Server version 32.0.1
Server Talk version 22.0.2
Signaling Mode External
Server Setup Details
Infrastructure:
- Nextcloud Server: 32.0.1
- Talk App: 22.0.2
- External Signaling Server: nextcloud-spreed-signaling (latest)
- TURN Server: coturn 4.6.2
- All services running on separate Hetzner Cloud VPS instances
Configuration:
- External signaling server configured and working
- TURN server configured with UDP/TCP on port 3478
- TURN relay ports: 49152-65535 (UDP/TCP)
- All firewall ports properly opened
- Nginx reverse proxy with WebSocket support
What Works:
- ✅ Desktop browser → Desktop browser calls
- ✅ Mobile browser → Desktop browser calls
- ✅ Mobile browser → Mobile browser calls
- ✅ Desktop app (Windows) → Any participant calls
- ✅ Chat, notifications, and all other features in mobile app
What Fails:
- ❌ Mobile app → Any participant (call drops immediately after joining)
- ❌ Any participant → Mobile app (same behavior)
Server Logs During Failed Call
Signaling Server Log:
clientsession.go:480: Session xxx joined room ftiv2gnz
room.go:789: Session xxx joined call ftiv2gnz
client.go:373: Error reading from client xxx: websocket: close 1006 (abnormal closure): unexpected EOF
hub.go:1067: Unregister xxx
clientsession.go:494: Session xxx left call ftiv2gnz
TURN Server Log:
session new, realm=<turn.domain>, username=<...>
session ALLOCATE processed, success
session usage: realm=<turn.domain>, username=<...>, rp=13, rb=1472, sp=7, sb=620
peer usage: realm=<turn.domain>, username=<...>, rp=0, rb=0, sp=0, sb=0
session closed, reason: allocation timeout
Key Observations
-
WebSocket Connection Closes Abnormally: The signaling server logs show
websocket: close 1006 (abnormal closure): unexpected EOF- the mobile app is closing the WebSocket connection unexpectedly. -
TURN Allocation Succeeds But No Media: The TURN server shows successful allocation but peer usage counters are all zero (rp=0, rb=0, sp=0, sb=0), indicating no media is being relayed.
-
Network Independent: Issue occurs on both WiFi and mobile data (4G/5G), ruling out network-specific problems.
-
Permissions Verified: All permissions granted, battery optimization disabled, background activity unrestricted.
-
Server Configuration Verified: Web calls working perfectly proves server-side configuration is correct.
Call Flow Analysis
- ✅ Mobile app initiates call
- ✅ Signaling server receives connection
- ✅ Session joins room
- ✅ Session joins call
- ✅ TURN allocation succeeds
- ❌ WebSocket closes abnormally (app-side issue)
- ❌ Call drops immediately
The issue appears to be in the mobile app's WebRTC/WebSocket handling when using external signaling servers. The app seems to be closing its own WebSocket connection to the signaling server during the ICE negotiation phase.
Tested Workarounds
- ✅ Using mobile web browser works perfectly
- ❌ Reinstalling app: No effect
- ❌ Clearing app cache: No effect
- ❌ Different networks: No effect
- ❌ Server-side timeout adjustments: No effect
Additional Context
This issue is critical for users relying on the mobile app for video calls. The workaround of using the mobile browser is functional but defeats the purpose of having a dedicated app.
Update
I've found that the app is using the standard android logging, so grabbed the log using the adb logcat. The log file is attached.
From the logs, it looks like an issue in the session id. (maybe a buggy code in CallActivity.kt (2262-2266) where using nextcloud session id in external signaling?!)