summaryrefslogtreecommitdiff
path: root/Userland/Libraries
diff options
context:
space:
mode:
Diffstat (limited to 'Userland/Libraries')
-rw-r--r--Userland/Libraries/LibIPC/Connection.cpp14
-rw-r--r--Userland/Libraries/LibIPC/Message.h2
-rw-r--r--Userland/Libraries/LibIPC/Stub.h2
3 files changed, 12 insertions, 6 deletions
diff --git a/Userland/Libraries/LibIPC/Connection.cpp b/Userland/Libraries/LibIPC/Connection.cpp
index e6247d264c..ab36d6bc98 100644
--- a/Userland/Libraries/LibIPC/Connection.cpp
+++ b/Userland/Libraries/LibIPC/Connection.cpp
@@ -49,7 +49,7 @@ Core::Stream::LocalSocket& ConnectionBase::fd_passing_socket()
ErrorOr<void> ConnectionBase::post_message(Message const& message)
{
- return post_message(message.encode());
+ return post_message(TRY(message.encode()));
}
ErrorOr<void> ConnectionBase::post_message(MessageBuffer buffer)
@@ -129,9 +129,15 @@ void ConnectionBase::handle_messages()
auto messages = move(m_unprocessed_messages);
for (auto& message : messages) {
if (message.endpoint_magic() == m_local_endpoint_magic) {
- if (auto response = m_local_stub.handle(message)) {
- if (auto result = post_message(*response); result.is_error()) {
- dbgln("IPC::ConnectionBase::handle_messages: {}", result.error());
+ auto handler_result = m_local_stub.handle(message);
+ if (handler_result.is_error()) {
+ dbgln("IPC::ConnectionBase::handle_messages: {}", handler_result.error());
+ continue;
+ }
+
+ if (auto response = handler_result.release_value()) {
+ if (auto post_result = post_message(*response); post_result.is_error()) {
+ dbgln("IPC::ConnectionBase::handle_messages: {}", post_result.error());
}
}
}
diff --git a/Userland/Libraries/LibIPC/Message.h b/Userland/Libraries/LibIPC/Message.h
index 4690b1d505..a5f202ec0e 100644
--- a/Userland/Libraries/LibIPC/Message.h
+++ b/Userland/Libraries/LibIPC/Message.h
@@ -54,7 +54,7 @@ public:
virtual int message_id() const = 0;
virtual char const* message_name() const = 0;
virtual bool valid() const = 0;
- virtual MessageBuffer encode() const = 0;
+ virtual ErrorOr<MessageBuffer> encode() const = 0;
protected:
Message() = default;
diff --git a/Userland/Libraries/LibIPC/Stub.h b/Userland/Libraries/LibIPC/Stub.h
index 5e34016e45..b64afa824c 100644
--- a/Userland/Libraries/LibIPC/Stub.h
+++ b/Userland/Libraries/LibIPC/Stub.h
@@ -25,7 +25,7 @@ public:
virtual u32 magic() const = 0;
virtual DeprecatedString name() const = 0;
- virtual OwnPtr<MessageBuffer> handle(Message const&) = 0;
+ virtual ErrorOr<OwnPtr<MessageBuffer>> handle(Message const&) = 0;
protected:
Stub() = default;