diff --git a/src/modules/module-client-device/proxy-device.c b/src/modules/module-client-device/proxy-device.c index a72e28258..ac30c6029 100644 --- a/src/modules/module-client-device/proxy-device.c +++ b/src/modules/module-client-device/proxy-device.c @@ -68,10 +68,12 @@ struct pw_proxy *pw_remote_spa_device_export(struct pw_remote *remote, "client-device", SPA_TYPE_INTERFACE_Device, SPA_VERSION_DEVICE, - &props->dict, + props ? &props->dict : NULL, user_data_size + sizeof(struct device_data)); + if (props) + pw_properties_free(props); if (proxy == NULL) - return NULL; + return NULL; data = pw_proxy_get_user_data(proxy); data = SPA_MEMBER(data, user_data_size, struct device_data); diff --git a/src/modules/module-client-node/remote-node.c b/src/modules/module-client-node/remote-node.c index eb59b9820..7e6112044 100644 --- a/src/modules/module-client-node/remote-node.c +++ b/src/modules/module-client-node/remote-node.c @@ -1149,6 +1149,12 @@ struct pw_proxy *pw_remote_node_export(struct pw_remote *remote, uint32_t type, struct pw_properties *props, void *object, size_t user_data_size) { + struct pw_node *node = object; + + if (props) { + pw_node_update_properties(node, &props->dict); + pw_properties_free(props); + } return node_export(remote, object, false, user_data_size); } diff --git a/src/pipewire/remote.c b/src/pipewire/remote.c index 2b545f791..fe62582ce 100644 --- a/src/pipewire/remote.c +++ b/src/pipewire/remote.c @@ -545,13 +545,16 @@ struct pw_proxy *pw_remote_export(struct pw_remote *remote, error_core_proxy: pw_log_error(NAME" %p: no core proxy: %s", remote, spa_strerror(res)); - goto exit; + goto exit_free; error_export_type: pw_log_error(NAME" %p: can't export type %d: %s", remote, type, spa_strerror(res)); - goto exit; + goto exit_free; error_proxy_failed: pw_log_error(NAME" %p: failed to create proxy: %s", remote, spa_strerror(res)); goto exit; +exit_free: + if (props) + pw_properties_free(props); exit: errno = -res; return NULL;