diff --git a/Base/etc/SystemServer.ini b/Base/etc/SystemServer.ini index 9410994127..0f2d12a3df 100644 --- a/Base/etc/SystemServer.ini +++ b/Base/etc/SystemServer.ini @@ -13,6 +13,8 @@ SocketPermissions=660 Lazy=1 User=webcontent BootModes=graphical +MultiInstance=1 +AcceptSocketConnections=1 [LookupServer] Socket=/tmp/portal/lookup diff --git a/Demos/WebView/WebContentClient.cpp b/Demos/WebView/WebContentClient.cpp index 98ab9dcda8..0594c1cf4e 100644 --- a/Demos/WebView/WebContentClient.cpp +++ b/Demos/WebView/WebContentClient.cpp @@ -37,8 +37,9 @@ WebContentClient::WebContentClient(WebContentView& view) void WebContentClient::handshake() { - auto response = send_sync(); + auto response = send_sync(getpid()); set_my_client_id(response->client_id()); + set_server_pid(response->server_pid()); } void WebContentClient::handle(const Messages::WebContentClient::DidPaint& message) diff --git a/Services/WebContent/ClientConnection.cpp b/Services/WebContent/ClientConnection.cpp index 4b84d340a0..70c6bccd6f 100644 --- a/Services/WebContent/ClientConnection.cpp +++ b/Services/WebContent/ClientConnection.cpp @@ -62,9 +62,10 @@ const Web::Page& ClientConnection::page() const return m_page_host->page(); } -OwnPtr ClientConnection::handle(const Messages::WebContentServer::Greet&) +OwnPtr ClientConnection::handle(const Messages::WebContentServer::Greet& message) { - return make(client_id()); + set_client_pid(message.client_pid()); + return make(client_id(), getpid()); } void ClientConnection::handle(const Messages::WebContentServer::UpdateSystemTheme& message) diff --git a/Services/WebContent/WebContentServer.ipc b/Services/WebContent/WebContentServer.ipc index d398fbb1b7..1dd8e03913 100644 --- a/Services/WebContent/WebContentServer.ipc +++ b/Services/WebContent/WebContentServer.ipc @@ -1,6 +1,6 @@ endpoint WebContentServer = 89 { - Greet() => (i32 client_id) + Greet(i32 client_pid) => (i32 client_id, i32 server_pid) UpdateSystemTheme(i32 shbuf_id) =| diff --git a/Services/WebContent/main.cpp b/Services/WebContent/main.cpp index 877da897aa..2e40fc7798 100644 --- a/Services/WebContent/main.cpp +++ b/Services/WebContent/main.cpp @@ -49,18 +49,7 @@ int main(int, char**) return 1; } - auto server = Core::LocalServer::construct(); - bool ok = server->take_over_from_system_server(); - ASSERT(ok); - server->on_ready_to_accept = [&] { - auto client_socket = server->accept(); - if (!client_socket) { - dbg() << "WebContent: accept failed."; - return; - } - static int s_next_client_id = 0; - int client_id = ++s_next_client_id; - IPC::new_client_connection(*client_socket, client_id); - }; + auto socket = Core::LocalSocket::take_over_accepted_socket_from_system_server(); + IPC::new_client_connection(*socket, 1); return event_loop.exec(); }