LibIPC: Make TransportSocketWindows responsible for reading entire

messages. Port of a371f84 to Windows.
This commit is contained in:
stasoid 2025-05-17 21:31:11 +05:00 committed by Andrew Kaster
commit 8af2a49b5c
Notes: github-actions[bot] 2025-06-17 21:38:09 +00:00
4 changed files with 58 additions and 22 deletions

View file

@ -17,7 +17,6 @@ using MessageSizeType = u32;
MessageBuffer::MessageBuffer()
{
m_data.resize(sizeof(MessageSizeType));
}
ErrorOr<void> MessageBuffer::extend_data_capacity(size_t capacity)
@ -59,15 +58,10 @@ ErrorOr<void> MessageBuffer::append_file_descriptor(int handle)
ErrorOr<void> MessageBuffer::transfer_message(Transport& transport)
{
Checked<MessageSizeType> checked_message_size { m_data.size() };
checked_message_size -= sizeof(MessageSizeType);
if (checked_message_size.has_overflow())
return Error::from_string_literal("Message is too large for IPC encoding");
MessageSizeType const message_size = checked_message_size.value();
m_data.span().overwrite(0, reinterpret_cast<u8 const*>(&message_size), sizeof(message_size));
TRY(transport.transfer(m_data.span(), m_handle_offsets));
TRY(transport.transfer_message(m_data, m_handle_offsets));
return {};
}