mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-04 13:30:12 -05:00
pulse-server: pending-sample: handle client disconnection correctly
Previously, a client disconnecting while a sample was playing could lead to issues. For example, if a client disconnected before the "ready" signal of the sample-play arrives, `operation_new_cb()` would be called and that would try to use the client's pw_manager, however, that has previously been destroyed in `client_disconnect()`. If the client disconnected after the "ready" signal but before the reply has been sent, then `sample_play_ready_reply()` would never be called since operations are completed via the client's pw_manager which would already be destroyed at that point. Fix this by installing a listener on the client, and properly cancelling the operation and making sure that the pending_sample is correctly destroyed.
This commit is contained in:
parent
bd510bf602
commit
2ba9881b4d
2 changed files with 18 additions and 0 deletions
|
|
@ -20,6 +20,7 @@ struct pending_sample {
|
|||
struct client *client;
|
||||
struct sample_play *play;
|
||||
struct spa_hook listener;
|
||||
struct spa_hook client_listener;
|
||||
uint32_t tag;
|
||||
unsigned replied:1;
|
||||
unsigned done:1;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue