diff options
Diffstat (limited to 'Userland/Libraries')
-rw-r--r-- | Userland/Libraries/LibIPC/Connection.cpp | 14 | ||||
-rw-r--r-- | Userland/Libraries/LibIPC/Message.h | 2 | ||||
-rw-r--r-- | Userland/Libraries/LibIPC/Stub.h | 2 |
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; |