Fix message parsing

My bad lol
This commit is contained in:
Lily Tsuru 2024-03-10 06:17:43 -04:00
parent 37f21d8167
commit 3a6f7e7d7d
2 changed files with 14 additions and 1 deletions

View File

@ -5,6 +5,8 @@
#include "DirtySockServer.hpp"
constexpr static auto MAX_PAYLOAD_SIZE = 4 * (1024 * 1024);
namespace ls {
DirtySockClient::DirtySockClient(Stream stream, base::Ref<DirtySockServer> server)
@ -26,6 +28,12 @@ namespace ls {
try {
co_await asio::async_read(stream, asio::buffer(&header, sizeof(header)), asio::deferred);
// Sanity check. I don't expect game payloa
if(header.payloadSize > MAX_PAYLOAD_SIZE) {
base::LogError("WOAH! Message size {} MB larger than {}MB..", (static_cast<float>(header.payloadSize) / 1024 / 1024), (static_cast<float>(MAX_PAYLOAD_SIZE) / 1024 / 1024));
co_return nullptr;
}
propertyBuffer.resize(header.payloadSize);
co_await asio::async_read(stream, asio::buffer(propertyBuffer), asio::deferred);

View File

@ -3,6 +3,8 @@
#include <base/logger.hpp>
#include <impl/asio_config.hpp>
// So debug message can just reply
#include "DirtySockClient.hpp"
#include "WireMessage.hpp"
namespace ls {
@ -156,6 +158,9 @@ namespace ls {
for(auto [key, value] : properties)
base::LogInfo("{}: {}", key, value);
// :( but it works to just replay the message.
co_await client->WriteMessage(std::make_shared<DebugMessage>(*this));
co_return;
}
};
@ -174,7 +179,7 @@ namespace ls {
else
ret = std::make_shared<DebugMessage>(header);
if(ret->ParseFromInputBuffer(propertyDataBuffer))
if(!ret->ParseFromInputBuffer(propertyDataBuffer))
return nullptr;
return ret;