From 836184e566de6a3e6ee44e0a06f9c5f85b98dfbf Mon Sep 17 00:00:00 2001 From: SpyCheese Date: Tue, 4 Oct 2022 18:25:25 +0300 Subject: [PATCH] Increase maximum size of http request --- rldp-http-proxy/rldp-http-proxy.cpp | 9 ++++----- rldp/rldp-in.hpp | 7 ++++++- rldp/rldp.cpp | 4 ++-- rldp/rldp.h | 6 ++---- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/rldp-http-proxy/rldp-http-proxy.cpp b/rldp-http-proxy/rldp-http-proxy.cpp index 0b679c27..a45e6433 100644 --- a/rldp-http-proxy/rldp-http-proxy.cpp +++ b/rldp-http-proxy/rldp-http-proxy.cpp @@ -825,11 +825,9 @@ class RldpToTcpRequestSender : public td::actor::Actor { } void got_result(std::pair, std::shared_ptr> R) { - if (R.first->need_payload()) { - td::actor::create_actor("HttpPayloadSender(R)", std::move(R.second), id_, local_id_, adnl_, - rldp_) - .release(); - } + td::actor::create_actor("HttpPayloadSender(R)", std::move(R.second), id_, local_id_, adnl_, + rldp_) + .release(); auto f = ton::serialize_tl_object(R.first->store_tl(), true); promise_.set_value(std::move(f)); stop(); @@ -1092,6 +1090,7 @@ class RldpHttpProxy : public td::actor::Actor { } rldp_ = ton::rldp::Rldp::create(adnl_.get()); + td::actor::send_closure(rldp_, &ton::rldp::Rldp::set_default_mtu, 16 << 10); td::actor::send_closure(rldp_, &ton::rldp::Rldp::add_id, local_id_); for (auto &serv_id : server_ids_) { td::actor::send_closure(rldp_, &ton::rldp::Rldp::add_id, serv_id); diff --git a/rldp/rldp-in.hpp b/rldp/rldp-in.hpp index b4981999..9640fd98 100644 --- a/rldp/rldp-in.hpp +++ b/rldp/rldp-in.hpp @@ -71,7 +71,7 @@ class RldpIn : public RldpImpl { void send_query(adnl::AdnlNodeIdShort src, adnl::AdnlNodeIdShort dst, std::string name, td::Promise promise, td::Timestamp timeout, td::BufferSlice data) override { - send_query_ex(src, dst, name, std::move(promise), timeout, std::move(data), default_mtu()); + send_query_ex(src, dst, name, std::move(promise), timeout, std::move(data), default_mtu_); } void send_query_ex(adnl::AdnlNodeIdShort src, adnl::AdnlNodeIdShort dst, std::string name, td::Promise promise, td::Timestamp timeout, td::BufferSlice data, @@ -101,6 +101,10 @@ class RldpIn : public RldpImpl { void add_id(adnl::AdnlNodeIdShort local_id) override; void get_conn_ip_str(adnl::AdnlNodeIdShort l_id, adnl::AdnlNodeIdShort p_id, td::Promise promise) override; + void set_default_mtu(td::uint64 mtu) override { + default_mtu_ = mtu; + } + RldpIn(td::actor::ActorId adnl) : adnl_(adnl) { } @@ -116,6 +120,7 @@ class RldpIn : public RldpImpl { std::set lru_set_; RldpLru lru_; td::uint32 lru_size_ = 0; + td::uint64 default_mtu_ = adnl::Adnl::get_mtu(); std::map max_size_; diff --git a/rldp/rldp.cpp b/rldp/rldp.cpp index 9b38dcb8..1a772a68 100644 --- a/rldp/rldp.cpp +++ b/rldp/rldp.cpp @@ -116,9 +116,9 @@ void RldpIn::process_message_part(adnl::AdnlNodeIdShort source, adnl::AdnlNodeId } auto ite = max_size_.find(part.transfer_id_); if (ite == max_size_.end()) { - if (static_cast(part.total_size_) > default_mtu()) { + if (static_cast(part.total_size_) > default_mtu_) { VLOG(RLDP_NOTICE) << "dropping too big rldp packet of size=" << part.total_size_ - << " default_mtu=" << default_mtu(); + << " default_mtu=" << default_mtu_; return; } } else { diff --git a/rldp/rldp.h b/rldp/rldp.h index edb19d7a..b8ce3623 100644 --- a/rldp/rldp.h +++ b/rldp/rldp.h @@ -28,15 +28,13 @@ class Rldp : public adnl::AdnlSenderInterface { public: virtual ~Rldp() = default; - static constexpr td::uint64 default_mtu() { - return adnl::Adnl::get_mtu(); - } - virtual void add_id(adnl::AdnlNodeIdShort local_id) = 0; virtual void send_message_ex(adnl::AdnlNodeIdShort src, adnl::AdnlNodeIdShort dst, td::Timestamp timeout, td::BufferSlice data) = 0; + virtual void set_default_mtu(td::uint64 mtu) = 0; + static td::actor::ActorOwn create(td::actor::ActorId adnl); };