diff --git a/td/telegram/Global.h b/td/telegram/Global.h index d32b7cc41..912cd0922 100644 --- a/td/telegram/Global.h +++ b/td/telegram/Global.h @@ -142,7 +142,7 @@ class Global final : public ActorContext { string get_option_string(Slice name, string default_value = "") const; bool is_server_time_reliable() const { - return server_time_difference_was_updated_; + return server_time_difference_was_updated_.load(std::memory_order_relaxed); } double to_server_time(double now) const { return now + get_server_time_difference(); diff --git a/td/telegram/net/NetQueryCreator.cpp b/td/telegram/net/NetQueryCreator.cpp index 01fc07f2f..9d07b02d0 100644 --- a/td/telegram/net/NetQueryCreator.cpp +++ b/td/telegram/net/NetQueryCreator.cpp @@ -11,6 +11,8 @@ #include "td/telegram/Td.h" #include "td/telegram/telegram_api.h" +#include "td/actor/actor.h" + #include "td/utils/buffer.h" #include "td/utils/format.h" #include "td/utils/Gzip.h" @@ -20,7 +22,7 @@ namespace td { NetQueryCreator::NetQueryCreator(std::shared_ptr net_query_stats) - : net_query_stats_(std::move(net_query_stats)) { + : net_query_stats_(std::move(net_query_stats)), current_scheduler_id_(Scheduler::instance()->sched_id()) { object_pool_.set_check_empty(true); } @@ -42,7 +44,7 @@ NetQueryPtr NetQueryCreator::create(uint64 id, const telegram_api::Function &fun int32 tl_constructor = function.get_id(); int32 total_timeout_limit = 60; - if (!G()->close_flag()) { + if (current_scheduler_id_ == Scheduler::instance()->sched_id() && !G()->close_flag()) { auto td = G()->td(); if (!td.empty()) { auto auth_manager = td.get_actor_unsafe()->auth_manager_.get(); diff --git a/td/telegram/net/NetQueryCreator.h b/td/telegram/net/NetQueryCreator.h index 75596d8c5..64ce914e6 100644 --- a/td/telegram/net/NetQueryCreator.h +++ b/td/telegram/net/NetQueryCreator.h @@ -43,6 +43,7 @@ class NetQueryCreator { private: std::shared_ptr net_query_stats_; ObjectPool object_pool_; + int32 current_scheduler_id_ = 0; }; } // namespace td