1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 03:17:35 +00:00

LibCore+LibIPC: Recognise %uid in path

This patch allows to insert "%uid" in `IPC_CLIENT_CONNECTION`
declaration and in SystemServer's ini files. This pattern is replaced
then replaced by the UID of the owner of the service. It opens a path
for seamlessly managed, per-user portal.
This commit is contained in:
Lucas CHOLLET 2022-07-19 21:01:04 +02:00 committed by Linus Groh
parent c5b7c9f479
commit 1b36348d8b
21 changed files with 33 additions and 21 deletions

View file

@ -6,6 +6,7 @@
#pragma once
#include <LibCore/Account.h>
#include <LibCore/Stream.h>
#include <LibIPC/Connection.h>
@ -17,7 +18,8 @@ public:
template<typename Klass = klass, class... Args> \
static ErrorOr<NonnullRefPtr<klass>> try_create(Args&&... args) \
{ \
auto socket = TRY(Core::Stream::LocalSocket::connect(socket_path)); \
auto parsed_socket_path { Core::Account::parse_path_with_uid(socket_path) }; \
auto socket = TRY(Core::Stream::LocalSocket::connect(move(parsed_socket_path))); \
/* We want to rate-limit our clients */ \
TRY(socket->set_blocking(true)); \
\