aboutsummaryrefslogtreecommitdiffhomepage
path: root/tdnet/td/net/GetHostByNameActor.cpp
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2019-02-04 03:12:40 +0300
committerlevlam <levlam@telegram.org>2019-02-04 03:12:40 +0300
commit2dd4b91d518edf6a7d91a58dcb2f7022d13cef53 (patch)
treea037da5bd5e3a829d94c146b634f8e30a212e16d /tdnet/td/net/GetHostByNameActor.cpp
parent83037ee014ec14fb5157940657b925bbfbb1f705 (diff)
Minor GetHostByName improvements.
GitOrigin-RevId: 9ceba9a941e3213a1748d22f38a126ace2d57e56
Diffstat (limited to 'tdnet/td/net/GetHostByNameActor.cpp')
-rw-r--r--tdnet/td/net/GetHostByNameActor.cpp36
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