Skip to content

Commit

Permalink
LibCore: Use ';' to split socket path in SOCKET_TAKEOVER
Browse files Browse the repository at this point in the history
This allow to use socket path with spaces inside.

Closes SerenityOS#16436.
  • Loading branch information
guerinoni authored and trflynn89 committed Dec 15, 2022
1 parent 944e17c commit 43ff500
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 4 deletions.
4 changes: 2 additions & 2 deletions Base/usr/share/man/man5/SystemServer.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,10 @@ Note that:
When SystemServer runs a service which has `Socket` defined, it will create the sockets and then pass an environment variable named `SOCKET_TAKEOVER` to the launched service. This environment variable is structured as follows:

```console
SOCKET_TAKEOVER=/tmp/socket1:3 /tmp/socket2:4
SOCKET_TAKEOVER=/tmp/socket1:3;/tmp/socket2:4
```

Items in the variable are separated by spaces, and each item has two components separated by a colon. The first part is the path of the socket requested, and the second part is the file descriptor number that was passed to the newly created service. The service can then parse this information and obtain file descriptors for each socket.
Items in the variable are separated by semicolons, and each item has two components separated by a colon. The first part is the path of the socket requested, and the second part is the file descriptor number that was passed to the newly created service. The service can then parse this information and obtain file descriptors for each socket.

## Examples

Expand Down
2 changes: 1 addition & 1 deletion Userland/Libraries/LibCore/SystemServerTakeover.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ static void parse_sockets_from_system_server()
return;
}

for (auto& socket : StringView { sockets, strlen(sockets) }.split_view(' ')) {
for (auto const socket : StringView { sockets, strlen(sockets) }.split_view(';')) {
auto params = socket.split_view(':');
s_overtaken_sockets.set(params[0].to_deprecated_string(), strtol(params[1].to_deprecated_string().characters(), nullptr, 10));
}
Expand Down
2 changes: 1 addition & 1 deletion Userland/Services/SystemServer/Service.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ void Service::spawn(int socket_fd)

int new_fd = dup(socket.fd);
if (i != 0)
builder.append(' ');
builder.append(';');
builder.appendff("{}:{}", socket.path, new_fd);
}
}
Expand Down

0 comments on commit 43ff500

Please sign in to comment.