Skip to content

fix(mpris): bound D-Bus calls with a real deadline and wait for gorou… - #142

Merged
b0bbywan merged 2 commits into
mainfrom
fix/mpris-dbus-call-timeout
Sep 9, 2026
Merged

b0bbywan merged 2 commits into
mainfrom
fix/mpris-dbus-call-timeout

Conversation

@b0bbywan

@b0bbywan b0bbywan commented Sep 9, 2026

Copy link
Copy Markdown
Owner

…tines on Close

callWithTimeout read call.Err after obj.Call had already returned, so the configured timeout never applied. Kodi never replies to the optional TrackList probe, which froze the listener (and Start) until the player left the bus; the player never reached the cache. Every call now goes through CallWithContext with mpris.timeout.

Close used to close the events channel while the listener could still be inside a handler, panicking on notify ("send on closed channel"). Listener and heartbeat Stop now wait for their goroutine; Close closes the D-Bus connection first so in-flight calls fail fast, then closes events last.

Claude-Session: https://claude.ai/code/session_01F9qZzw2ePsBw6ZeUPnzTDz

b0bbywan and others added 2 commits September 9, 2026 22:59
…tines on Close

callWithTimeout read call.Err after obj.Call had already returned, so the
configured timeout never applied. Kodi never replies to the optional
TrackList probe, which froze the listener (and Start) until the player
left the bus; the player never reached the cache. Every call now goes
through CallWithContext with mpris.timeout.

Close used to close the events channel while the listener could still be
inside a handler, panicking on notify ("send on closed channel"). Listener
and heartbeat Stop now wait for their goroutine; Close closes the D-Bus
connection first so in-flight calls fail fast, then closes events last.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01F9qZzw2ePsBw6ZeUPnzTDz
Same no-op callWithTimeout as mpris: it read call.Err after obj.Call had
already blocked for the reply. Route every call through CallWithContext
with the backend timeout. Device1.Connect keeps the pairing timeout since
a first connect bonds the device and routinely outlasts the 5s default.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01F9qZzw2ePsBw6ZeUPnzTDz
@b0bbywan
b0bbywan merged commit e029ee1 into main Sep 9, 2026
11 checks passed
@b0bbywan
b0bbywan deleted the fix/mpris-dbus-call-timeout branch September 10, 2026 22:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant