diff options
| author | levlam <levlam@telegram.org> | 2019-02-04 03:12:40 +0300 |
|---|---|---|
| committer | levlam <levlam@telegram.org> | 2019-02-04 03:12:40 +0300 |
| commit | 2dd4b91d518edf6a7d91a58dcb2f7022d13cef53 (patch) | |
| tree | a037da5bd5e3a829d94c146b634f8e30a212e16d /tdnet/td/net/GetHostByNameActor.cpp | |
| parent | 83037ee014ec14fb5157940657b925bbfbb1f705 (diff) | |
Minor GetHostByName improvements.
GitOrigin-RevId: 9ceba9a941e3213a1748d22f38a126ace2d57e56
Diffstat (limited to 'tdnet/td/net/GetHostByNameActor.cpp')
| -rw-r--r-- | tdnet/td/net/GetHostByNameActor.cpp | 36 |
1 files changed, 22 insertions, 14 deletions
diff --git a/tdnet/td/net/GetHostByNameActor.cpp b/tdnet/td/net/GetHostByNameActor.cpp index dd69cb15e..fdef46f64 100644 --- a/tdnet/td/net/GetHostByNameActor.cpp +++ b/tdnet/td/net/GetHostByNameActor.cpp @@ -6,10 +6,12 @@ // #include "td/net/GetHostByNameActor.h" +#include "td/net/SslStream.h" #include "td/net/Wget.h" #include "td/utils/JsonBuilder.h" #include "td/utils/logging.h" +#include "td/utils/Slice.h" #include "td/utils/Time.h" namespace td { @@ -139,6 +141,7 @@ class DnsResolver : public Actor { loop(); } }; + } // namespace detail ActorOwn<> GetHostByNameActor::resolve(std::string host, ResolveOptions options, Promise<IPAddress> promise) { @@ -158,20 +161,7 @@ ActorOwn<> GetHostByNameActor::resolve(std::string host, ResolveOptions options, } } -GetHostByNameActor::GetHostByNameActor(Options options) : options_(options) { -} - -void GetHostByNameActor::on_result(std::string host, bool prefer_ipv6, Result<IPAddress> res) { - auto value_it = cache_[prefer_ipv6].find(host); - CHECK(value_it != cache_[prefer_ipv6].end()); - auto &value = value_it->second; - - auto promises = std::move(value.promises); - auto end_time = Time::now() + (res.is_ok() ? options_.ok_timeout : options_.error_timeout); - value = Value{std::move(res), end_time}; - for (auto &promise : promises) { - promise.second.set_result(value.get_ip_port(promise.first)); - } +GetHostByNameActor::GetHostByNameActor(Options options) : options_(std::move(options)) { } void GetHostByNameActor::run(string host, int port, bool prefer_ipv6, Promise<IPAddress> promise) { @@ -197,4 +187,22 @@ void GetHostByNameActor::run(string host, int port, bool prefer_ipv6, Promise<IP } } +void GetHostByNameActor::on_result(std::string host, bool prefer_ipv6, Result<IPAddress> res) { + auto value_it = cache_[prefer_ipv6].find(host); + CHECK(value_it != cache_[prefer_ipv6].end()); + auto &value = value_it->second; + CHECK(!value.promises.empty()); + CHECK(!value.query.empty()); + + auto promises = std::move(value.promises); + auto end_time = Time::now() + (res.is_ok() ? options_.ok_timeout : options_.error_timeout); + value = Value{std::move(res), end_time}; + CHECK(value.promises.empty()); + CHECK(value.query.empty()); + + for (auto &promise : promises) { + promise.second.set_result(value.get_ip_port(promise.first)); + } +} + } // namespace td |
