Desktop Talk join call fails due to stale TURN credentials → coturn: Cannot find credentials of user and ICE never connects
How to use GitHub
- Please use the 👍 reaction to show that you are affected by the same issue.
- Please don't comment if you have no relevant information to add. It's just extra noise for everyone subscribed to this issue.
- Subscribe to receive notifications on status change and new comments.
Steps to reproduce
- User joins a Talk call using Nextcloud Desktop — user agent example:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) NextcloudTalk/1.2.5 Chrome/138.0.7204.100 Electron/37.2.3 Safari/537.36 - User leaves the call. Wait until the previously issued TURN REST credential expires (the day after: > 24h).
- User attempts to join a call. Joining fails: no media, ICE never connects.
Notes:
Once, restarting the signaling server (HPB) made joins work again. But other time restarting signaling server didn't make things work. The affected participant has to restart his laptop to be able to join call (with fresh credentials)
Expected behaviour
On every call, the Desktop client should fetch fresh TURN credentials so coturn accepts the Allocate and ICE can succeed.
Actual behaviour
The Desktop client appears to reuse stale TURN credentials from a previous session. Coturn then rejects Allocate and ICE fails.
in inspect element there is:
Diagnosis and logs
Here are logs in coturn:
ERROR: check_stun_auth: Cannot find credentials of user <timestamp:xxxxx>
where timestamp is older than > 24h
Diagnosis report
Diagnosis report
Diagnosis report
| Nextcloud Talk Desktop | |
|---|---|
| Version | v1.2.5 |
| Built-in Talk version | v21.1.2 |
| Release channel | stable |
| Operating system | Darwin 24.5.0 (Darwin Kernel Version 24.5.0: Tue Apr 22 19:54:49 PDT 2025; root:xnu-11417.121.6~2/RELEASE_ARM64_T6000) |
| Executable Path | /Applications/Nextcloud Talk.app/Contents/MacOS/Nextcloud Talk |
| Connected to | - |
| Nextcloud version | 31.0.7 |
| Nextcloud Talk version | 21.1.2 |
notifications app enabled |
✅ yes |
notify_push app enabled |
❌ no |
Application config
{
"launchAtStartup": true,
"theme": "default",
"systemTitleBar": true,
"monochromeTrayIcon": true,
"zoomFactor": 1,
"playSoundChat": "respect-dnd",
"playSoundCall": "respect-dnd",
"enableCallbox": "respect-dnd",
"secondarySpeaker": false,
"secondarySpeakerDevice": null,
"trustedFingerprints": []
}
I sometimes have the same issue, but not always.
The affected participant has to restart his laptop to be able to join call (with fresh credentials)
A laptop? Restarting the Talk Desktop client doesn't help?
@danxuliu Could you assist here?
The affected participant has to restart his laptop to be able to join call (with fresh credentials)
A laptop? Restarting the Talk Desktop client doesn't help?
Before restarting laptop the concerned participant told us he leaved and re-joined the app, maybe he didn't restart the app correctly.
Not refreshing the TURN credentials once they expired is a known issue. But I would expect that the desktop app fetches the signaling settings again and, with them, refreshed TURN credentials, when switching to a different conversation (just like done in the WebUI) 🤔