diff --git a/src/modules/module-client-node/remote-node.c b/src/modules/module-client-node/remote-node.c index d486249bb..6c879ac51 100644 --- a/src/modules/module-client-node/remote-node.c +++ b/src/modules/module-client-node/remote-node.c @@ -1124,6 +1124,7 @@ static void client_node_removed(void *_data) pw_log_debug("%p: removed", data); spa_hook_remove(&data->proxy_client_node_listener); + spa_hook_remove(&data->client_node_listener); if (data->node) { spa_hook_remove(&data->node_listener); diff --git a/src/tools/pw-cat.c b/src/tools/pw-cat.c index 666024938..64739db79 100644 --- a/src/tools/pw-cat.c +++ b/src/tools/pw-cat.c @@ -1930,14 +1930,21 @@ int main(int argc, char *argv[]) } error_connect_fail: - if (data.stream) + if (data.stream) { + spa_hook_remove(&data.stream_listener); pw_stream_destroy(data.stream); + } error_no_stream: - if (data.metadata) + if (data.metadata) { + spa_hook_remove(&data.metadata_listener); pw_proxy_destroy((struct pw_proxy*)data.metadata); - if (data.registry) + } + if (data.registry) { + spa_hook_remove(&data.registry_listener); pw_proxy_destroy((struct pw_proxy*)data.registry); + } error_no_registry: + spa_hook_remove(&data.core_listener); pw_core_disconnect(data.core); error_ctx_connect_failed: pw_context_destroy(data.context);