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;
|
string get_option_string(Slice name, string default_value = "") const;
|
||||||
|
|
||||||
bool is_server_time_reliable() 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 {
|
double to_server_time(double now) const {
|
||||||
return now + get_server_time_difference();
|
return now + get_server_time_difference();
|
||||||
|
@ -11,6 +11,8 @@
|
|||||||
#include "td/telegram/Td.h"
|
#include "td/telegram/Td.h"
|
||||||
#include "td/telegram/telegram_api.h"
|
#include "td/telegram/telegram_api.h"
|
||||||
|
|
||||||
|
#include "td/actor/actor.h"
|
||||||
|
|
||||||
#include "td/utils/buffer.h"
|
#include "td/utils/buffer.h"
|
||||||
#include "td/utils/format.h"
|
#include "td/utils/format.h"
|
||||||
#include "td/utils/Gzip.h"
|
#include "td/utils/Gzip.h"
|
||||||
@ -20,7 +22,7 @@
|
|||||||
namespace td {
|
namespace td {
|
||||||
|
|
||||||
NetQueryCreator::NetQueryCreator(std::shared_ptr<NetQueryStats> net_query_stats)
|
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);
|
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 tl_constructor = function.get_id();
|
||||||
int32 total_timeout_limit = 60;
|
int32 total_timeout_limit = 60;
|
||||||
|
|
||||||
if (!G()->close_flag()) {
|
if (current_scheduler_id_ == Scheduler::instance()->sched_id() && !G()->close_flag()) {
|
||||||
auto td = G()->td();
|
auto td = G()->td();
|
||||||
if (!td.empty()) {
|
if (!td.empty()) {
|
||||||
auto auth_manager = td.get_actor_unsafe()->auth_manager_.get();
|
auto auth_manager = td.get_actor_unsafe()->auth_manager_.get();
|
||||||
|
@ -43,6 +43,7 @@ class NetQueryCreator {
|
|||||||
private:
|
private:
|
||||||
std::shared_ptr<NetQueryStats> net_query_stats_;
|
std::shared_ptr<NetQueryStats> net_query_stats_;
|
||||||
ObjectPool<NetQuery> object_pool_;
|
ObjectPool<NetQuery> object_pool_;
|
||||||
|
int32 current_scheduler_id_ = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace td
|
} // namespace td
|
||||||
|
Loading…
Reference in New Issue
Block a user