diff --git a/tools/dhtchat.cpp b/tools/dhtchat.cpp index 3ba7c6f401479a8fab313a29d32b4f4000c2ac76..5c7e72c17a2e0400a0201e26b947bafa4a13604a 100644 --- a/tools/dhtchat.cpp +++ b/tools/dhtchat.cpp @@ -82,6 +82,10 @@ main(int argc, char **argv) config.push_token = params.devicekey; config.peer_discovery = params.peer_discovery; config.peer_publish = params.peer_discovery; + if (params.no_rate_limit) { + config.dht_config.node_config.max_req_per_sec = -1; + config.dht_config.node_config.max_peer_req_per_sec = -1; + } dht::DhtRunner::Context context {}; if (params.log) { diff --git a/tools/dhtnode.cpp b/tools/dhtnode.cpp index b80d8cb8db6585e48290ede5bbd33ce2d7ec494c..31eca901d74b154d5c5c169e8fce1e3e9e36a343 100644 --- a/tools/dhtnode.cpp +++ b/tools/dhtnode.cpp @@ -552,6 +552,10 @@ main(int argc, char **argv) config.push_token = params.devicekey; config.peer_discovery = params.peer_discovery; config.peer_publish = params.peer_discovery; + if (params.no_rate_limit) { + config.dht_config.node_config.max_req_per_sec = -1; + config.dht_config.node_config.max_peer_req_per_sec = -1; + } dht::DhtRunner::Context context {}; if (params.log) { diff --git a/tools/tools_common.h b/tools/tools_common.h index bd682a03bc473274d2b45849c726776b6e378bf6..f368afdabd79d34c0c0bfb4a0f77c88694b0d8f9 100644 --- a/tools/tools_common.h +++ b/tools/tools_common.h @@ -131,6 +131,7 @@ struct dht_params { std::string privkey_pwd {}; std::string proxy_privkey_pwd {}; std::string save_identity {}; + bool no_rate_limit {false}; }; static const constexpr struct option long_options[] = { @@ -147,6 +148,7 @@ static const constexpr struct option long_options[] = { {"daemonize", no_argument , nullptr, 'd'}, {"service", no_argument , nullptr, 's'}, {"peer-discovery", no_argument , nullptr, 'D'}, + {"no-rate-limit", no_argument , nullptr, 'U'}, {"persist", required_argument, nullptr, 'f'}, {"logfile", required_argument, nullptr, 'l'}, {"syslog", no_argument , nullptr, 'L'}, @@ -168,7 +170,7 @@ parseArgs(int argc, char **argv) { int opt; std::string privkey; std::string proxy_privkey; - while ((opt = getopt_long(argc, argv, "hidsvDp:n:b:f:l:", long_options, nullptr)) != -1) { + while ((opt = getopt_long(argc, argv, "hidsvDUp:n:b:f:l:", long_options, nullptr)) != -1) { switch (opt) { case 'p': { int port_arg = atoi(optarg); @@ -212,6 +214,9 @@ parseArgs(int argc, char **argv) { case 'n': params.network = strtoul(optarg, nullptr, 0); break; + case 'U': + params.no_rate_limit = true; + break; case 'b': params.bootstrap = dht::splitPort((optarg[0] == '=') ? optarg+1 : optarg); if (not params.bootstrap.first.empty() and params.bootstrap.second.empty()) {