Use send_closure_later in on_user_online_timeout_callback to avoid accidental access to MultiTimoeut.
GitOrigin-RevId: b488a006dcbe17d661e18a6e578c08cd070b84ea
This commit is contained in:
parent
2b382567be
commit
cea15d975a
@ -2353,16 +2353,23 @@ void ContactsManager::on_user_online_timeout_callback(void *contacts_manager_ptr
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto contacts_manager = static_cast<ContactsManager *>(contacts_manager_ptr);
|
auto contacts_manager = static_cast<ContactsManager *>(contacts_manager_ptr);
|
||||||
UserId user_id(narrow_cast<int32>(user_id_long));
|
send_closure_later(contacts_manager->actor_id(contacts_manager), &ContactsManager::on_user_online_timeout,
|
||||||
auto u = contacts_manager->get_user(user_id);
|
UserId(narrow_cast<int32>(user_id_long)));
|
||||||
|
}
|
||||||
|
|
||||||
|
void ContactsManager::on_user_online_timeout(UserId user_id) {
|
||||||
|
if (G()->close_flag()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto u = get_user(user_id);
|
||||||
CHECK(u != nullptr);
|
CHECK(u != nullptr);
|
||||||
|
|
||||||
LOG(INFO) << "Update " << user_id << " online status to offline";
|
LOG(INFO) << "Update " << user_id << " online status to offline";
|
||||||
send_closure_later(
|
send_closure(G()->td(), &Td::send_update,
|
||||||
G()->td(), &Td::send_update,
|
td_api::make_object<td_api::updateUserStatus>(user_id.get(), get_user_status_object(user_id, u)));
|
||||||
make_tl_object<td_api::updateUserStatus>(user_id.get(), contacts_manager->get_user_status_object(user_id, u)));
|
|
||||||
|
|
||||||
contacts_manager->update_user_online_member_count(u);
|
update_user_online_member_count(u);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ContactsManager::on_channel_unban_timeout_callback(void *contacts_manager_ptr, int64 channel_id_long) {
|
void ContactsManager::on_channel_unban_timeout_callback(void *contacts_manager_ptr, int64 channel_id_long) {
|
||||||
|
@ -1104,6 +1104,8 @@ class ContactsManager : public Actor {
|
|||||||
|
|
||||||
static void on_channel_unban_timeout_callback(void *contacts_manager_ptr, int64 channel_id_long);
|
static void on_channel_unban_timeout_callback(void *contacts_manager_ptr, int64 channel_id_long);
|
||||||
|
|
||||||
|
void on_user_online_timeout(UserId user_id);
|
||||||
|
|
||||||
template <class StorerT>
|
template <class StorerT>
|
||||||
static void store_link_state(const LinkState &link_state, StorerT &storer);
|
static void store_link_state(const LinkState &link_state, StorerT &storer);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user