From 5ef9deae83b9ee3aa8a4054178e99c8a67651d77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Barnab=C3=A1s=20P=C5=91cze?= Date: Thu, 11 Nov 2021 11:43:28 +0100 Subject: [PATCH] pulse-server: client: do not queue messages after disconnect Do not queue messages to be delivered to a client if that client has already disconnected. --- src/modules/module-protocol-pulse/client.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/modules/module-protocol-pulse/client.c b/src/modules/module-protocol-pulse/client.c index 88e76e1e3..e4be4f1b8 100644 --- a/src/modules/module-protocol-pulse/client.c +++ b/src/modules/module-protocol-pulse/client.c @@ -182,6 +182,11 @@ int client_queue_message(struct client *client, struct message *msg) if (msg == NULL) return -EINVAL; + if (client->disconnect) { + res = -ENOTCONN; + goto error; + } + if (msg->length == 0) { res = 0; goto error; @@ -212,6 +217,8 @@ int client_flush_messages(struct client *client) struct impl *impl = client->impl; int res; + spa_assert(!client->disconnect); + while (true) { struct message *m; struct descriptor desc; @@ -269,6 +276,9 @@ int client_queue_subscribe_event(struct client *client, uint32_t mask, uint32_t struct impl *impl = client->impl; struct message *reply, *m, *t; + if (client->disconnect) + return -ENOTCONN; + if (!(client->subscribed & mask)) return 0;