mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-04 13:30:12 -05:00
client: set ucred properties
This commit is contained in:
parent
3334ed73ae
commit
ebea63ad0a
3 changed files with 19 additions and 6 deletions
|
|
@ -1038,11 +1038,6 @@ static struct client *client_new(struct impl *impl, int fd)
|
||||||
if (properties == NULL)
|
if (properties == NULL)
|
||||||
goto no_props;
|
goto no_props;
|
||||||
|
|
||||||
if (ucredp) {
|
|
||||||
pw_properties_setf(properties, "application.process.id", "%d", ucredp->pid);
|
|
||||||
pw_properties_setf(properties, "application.process.userid", "%d", ucredp->uid);
|
|
||||||
}
|
|
||||||
|
|
||||||
client = pw_client_new(impl->core, pw_module_get_global(impl->module),
|
client = pw_client_new(impl->core, pw_module_get_global(impl->module),
|
||||||
ucredp, properties, sizeof(struct client));
|
ucredp, properties, sizeof(struct client));
|
||||||
if (client == NULL)
|
if (client == NULL)
|
||||||
|
|
|
||||||
|
|
@ -230,6 +230,7 @@ static struct pw_client *client_new(struct server *s, int fd)
|
||||||
socklen_t len;
|
socklen_t len;
|
||||||
struct ucred ucred, *ucredp;
|
struct ucred ucred, *ucredp;
|
||||||
struct pw_core *core = protocol->core;
|
struct pw_core *core = protocol->core;
|
||||||
|
struct pw_properties *props;
|
||||||
|
|
||||||
len = sizeof(ucred);
|
len = sizeof(ucred);
|
||||||
if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, &ucred, &len) < 0) {
|
if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, &ucred, &len) < 0) {
|
||||||
|
|
@ -239,10 +240,14 @@ static struct pw_client *client_new(struct server *s, int fd)
|
||||||
ucredp = &ucred;
|
ucredp = &ucred;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
props = pw_properties_new("pipewire.protocol", "protocol-native", NULL);
|
||||||
|
if (props == NULL)
|
||||||
|
goto no_props;
|
||||||
|
|
||||||
client = pw_client_new(protocol->core,
|
client = pw_client_new(protocol->core,
|
||||||
pw_module_get_global(pd->module),
|
pw_module_get_global(pd->module),
|
||||||
ucredp,
|
ucredp,
|
||||||
NULL,
|
props,
|
||||||
sizeof(struct client_data));
|
sizeof(struct client_data));
|
||||||
if (client == NULL)
|
if (client == NULL)
|
||||||
goto no_client;
|
goto no_client;
|
||||||
|
|
@ -272,6 +277,7 @@ static struct pw_client *client_new(struct server *s, int fd)
|
||||||
no_source:
|
no_source:
|
||||||
pw_client_destroy(client);
|
pw_client_destroy(client);
|
||||||
no_client:
|
no_client:
|
||||||
|
no_props:
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -108,6 +108,18 @@ struct pw_client *pw_client_new(struct pw_core *core,
|
||||||
this->core = core;
|
this->core = core;
|
||||||
if ((this->ucred_valid = (ucred != NULL)))
|
if ((this->ucred_valid = (ucred != NULL)))
|
||||||
this->ucred = *ucred;
|
this->ucred = *ucred;
|
||||||
|
|
||||||
|
if (properties == NULL)
|
||||||
|
properties = pw_properties_new(NULL, NULL);
|
||||||
|
if (properties == NULL)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (ucred) {
|
||||||
|
pw_properties_setf(properties, "pipewire.ucred.pid", "%d", ucred->pid);
|
||||||
|
pw_properties_setf(properties, "pipewire.ucred.uid", "%d", ucred->uid);
|
||||||
|
pw_properties_setf(properties, "pipewire.ucred.gid", "%d", ucred->gid);
|
||||||
|
}
|
||||||
|
|
||||||
this->properties = properties;
|
this->properties = properties;
|
||||||
|
|
||||||
if (user_data_size > 0)
|
if (user_data_size > 0)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue