From f57a806cf81cbe53c3146c5a3b875d0317541a61 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 22 May 2019 10:09:12 +0200 Subject: [PATCH] Return -EEXIST when registering an object twice --- src/pipewire/client.c | 3 +++ src/pipewire/factory.c | 3 +++ src/pipewire/link.c | 3 +++ src/pipewire/port.c | 1 + 4 files changed, 10 insertions(+) diff --git a/src/pipewire/client.c b/src/pipewire/client.c index e7a3acc99..a6dd8f46c 100644 --- a/src/pipewire/client.c +++ b/src/pipewire/client.c @@ -311,6 +311,9 @@ int pw_client_register(struct pw_client *client, { struct pw_core *core = client->core; + if (client->registered) + return -EEXIST; + pw_log_debug("client %p: register parent %d", client, parent ? parent->id : SPA_ID_INVALID); spa_list_append(&core->client_list, &client->link); diff --git a/src/pipewire/factory.c b/src/pipewire/factory.c index cf99f395f..8d678700b 100644 --- a/src/pipewire/factory.c +++ b/src/pipewire/factory.c @@ -146,6 +146,9 @@ int pw_factory_register(struct pw_factory *factory, { struct pw_core *core = factory->core; + if (factory->registered) + return -EEXIST; + if (properties == NULL) properties = pw_properties_new(NULL, NULL); if (properties == NULL) diff --git a/src/pipewire/link.c b/src/pipewire/link.c index eecfbe1a0..073c7605c 100644 --- a/src/pipewire/link.c +++ b/src/pipewire/link.c @@ -1394,6 +1394,9 @@ int pw_link_register(struct pw_link *link, struct pw_core *core = link->core; struct pw_node *input_node, *output_node; + if (link->registered) + return -EEXIST; + if (properties == NULL) properties = pw_properties_new(NULL, NULL); if (properties == NULL) diff --git a/src/pipewire/port.c b/src/pipewire/port.c index f62496a73..c1f676c58 100644 --- a/src/pipewire/port.c +++ b/src/pipewire/port.c @@ -785,6 +785,7 @@ static void pw_port_remove(struct pw_port *port) } spa_list_remove(&port->link); pw_node_emit_port_removed(node, port); + port->node = NULL; } void pw_port_destroy(struct pw_port *port)