From dca95edf27df13c5702a1fb07acf2c24597ab875 Mon Sep 17 00:00:00 2001 From: levlam Date: Thu, 15 Aug 2019 22:10:42 +0300 Subject: [PATCH] Add test_flood_wait option. GitOrigin-RevId: 46cdd7db52a54f47380ae21a9457aad6e95dcc61 --- td/telegram/Td.cpp | 5 +++++ td/telegram/net/NetQueryDispatcher.cpp | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/td/telegram/Td.cpp b/td/telegram/Td.cpp index 650d592c..e4aeebf1 100644 --- a/td/telegram/Td.cpp +++ b/td/telegram/Td.cpp @@ -6964,6 +6964,11 @@ void Td::on_request(uint64 id, td_api::setOption &request) { return; } break; + case 't': + if (set_boolean_option("test_flood_wait")) { + return; + } + break; case 'X': case 'x': { if (request.name_.size() > 255) { diff --git a/td/telegram/net/NetQueryDispatcher.cpp b/td/telegram/net/NetQueryDispatcher.cpp index fc0deade..3af0e41c 100644 --- a/td/telegram/net/NetQueryDispatcher.cpp +++ b/td/telegram/net/NetQueryDispatcher.cpp @@ -42,7 +42,13 @@ void NetQueryDispatcher::complete_net_query(NetQueryPtr net_query) { void NetQueryDispatcher::dispatch(NetQueryPtr net_query) { net_query->debug("dispatch"); if (stop_flag_.load(std::memory_order_relaxed)) { - net_query->set_error(Status::Error(500, "Request aborted")); + if (net_query->id() != 0) { + net_query->set_error(Status::Error(500, "Request aborted")); + } + return complete_net_query(std::move(net_query)); + } + if (net_query->id() != 0 && G()->shared_config().get_option_boolean("test_flood_wait")) { + net_query->set_error(Status::Error(429, "Too Many Requests: retry after 10")); return complete_net_query(std::move(net_query)); }