mirror of
https://github.com/monero-project/monero.git
synced 2026-07-28 22:51:07 -07:00
net: cap aggregate ZMQ receive size
This commit is contained in:
@@ -150,6 +150,12 @@ namespace zmq
|
||||
if ((last = zmq_msg_recv(part.handle(), socket, flags)) < 0)
|
||||
return last;
|
||||
|
||||
if (max_message_size < payload.size() ||
|
||||
max_message_size - payload.size() < part.size())
|
||||
{
|
||||
errno = EMSGSIZE;
|
||||
return -1;
|
||||
}
|
||||
payload.append(part.data(), part.size());
|
||||
if (!zmq_msg_more(part.handle()))
|
||||
break;
|
||||
|
||||
@@ -64,6 +64,8 @@ namespace net
|
||||
{
|
||||
namespace zmq
|
||||
{
|
||||
constexpr std::size_t max_message_size = 10 * 1024 * 1024; // 10 MiB
|
||||
|
||||
//! \return Category for ZMQ errors.
|
||||
const std::error_category& error_category() noexcept;
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ namespace cryptonote
|
||||
namespace
|
||||
{
|
||||
constexpr const int num_zmq_threads = 1;
|
||||
constexpr const std::int64_t max_message_size = 10 * 1024 * 1024; // 10 MiB
|
||||
constexpr const std::int64_t max_frame_size = net::zmq::max_message_size;
|
||||
constexpr const std::chrono::seconds linger_timeout{2}; // wait period for pending out messages
|
||||
|
||||
net::zmq::socket init_socket(void* context, int type, epee::span<const std::string> addresses)
|
||||
@@ -62,7 +62,7 @@ namespace
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (zmq_setsockopt(out.get(), ZMQ_MAXMSGSIZE, std::addressof(max_message_size), sizeof(max_message_size)) != 0)
|
||||
if (zmq_setsockopt(out.get(), ZMQ_MAXMSGSIZE, std::addressof(max_frame_size), sizeof(max_frame_size)) != 0)
|
||||
{
|
||||
MONERO_LOG_ZMQ_ERROR("Failed to set maximum incoming message size");
|
||||
return nullptr;
|
||||
|
||||
Reference in New Issue
Block a user