From e48bfb7ed303267bfd11974aef87d80b869a76a4 Mon Sep 17 00:00:00 2001 From: Andrey Pfau Date: Sat, 8 Jun 2024 20:57:49 +0400 Subject: [PATCH] Send AdnlMessageNop instead empty Buffer for reverse pings This commit modifies send_message_ex to use AdnlMessageNop for empty payloads instead of AdnlMessageCustom. This change prevents exceptions in ADNL node implementations that expect non-empty messages, particularly addressing issues with reverse-ping operations from DHT nodes. Using AdnlMessageNop ensures proper handling of empty messages --- adnl/adnl-peer-table.hpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/adnl/adnl-peer-table.hpp b/adnl/adnl-peer-table.hpp index 1c30b84c..1b61833f 100644 --- a/adnl/adnl-peer-table.hpp +++ b/adnl/adnl-peer-table.hpp @@ -55,6 +55,10 @@ class AdnlPeerTableImpl : public AdnlPeerTable { VLOG(ADNL_WARNING) << "DUMP: " << td::buffer_to_hex(data.as_slice().truncate(128)); return; } + if (data.empty()) { + send_message_in(src, dst, AdnlMessage{adnlmessage::AdnlMessageNop()}, flags); + return; + } send_message_in(src, dst, AdnlMessage{adnlmessage::AdnlMessageCustom{std::move(data)}}, flags); } void answer_query(AdnlNodeIdShort src, AdnlNodeIdShort dst, AdnlQueryId query_id, td::BufferSlice data) override;