Ensure that NetQueryCreator doesn't access Td from another thread.
This commit is contained in:
parent
c920536260
commit
1ab81f426c
@ -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();
|
||||
|
@ -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<NetQueryStats> 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();
|
||||
|
@ -43,6 +43,7 @@ class NetQueryCreator {
|
||||
private:
|
||||
std::shared_ptr<NetQueryStats> net_query_stats_;
|
||||
ObjectPool<NetQuery> object_pool_;
|
||||
int32 current_scheduler_id_ = 0;
|
||||
};
|
||||
|
||||
} // namespace td
|
||||
|
Loading…
Reference in New Issue
Block a user