pulse-server: stream: only remove from list if pending

Only call `spa_list_remove()` in `stream_free()` if the
stream is pending. `spa_list_remove()` does not reinitialize
the list node, therefore calling `spa_list_remove()` again
after the stream has been removed from the pending list
will corrupt the pending list of the client.
This commit is contained in:
Barnabás Pőcze 2021-12-14 14:39:38 +01:00 committed by Wim Taymans
parent 043934655a
commit 6f412236d5
3 changed files with 8 additions and 3 deletions

View file

@ -96,7 +96,8 @@ void stream_free(struct stream *stream)
pw_log_debug("client %p: stream %p channel:%d", client, stream, stream->channel);
spa_list_remove(&stream->link);
if (stream->pending)
spa_list_remove(&stream->link);
if (stream->drain_tag)
reply_error(client, -1, stream->drain_tag, -ENOENT);