Set connection online flag while logging out.
This commit is contained in:
parent
340e0f0b85
commit
8d7bda00a5
@ -201,6 +201,10 @@ void Session::start_up() {
|
||||
send_closure(session_, &Session::on_online, online_flag);
|
||||
return session_.is_alive();
|
||||
}
|
||||
bool on_logging_out(bool logging_out_flag) final {
|
||||
send_closure(session_, &Session::on_logging_out, logging_out_flag);
|
||||
return session_.is_alive();
|
||||
}
|
||||
|
||||
private:
|
||||
ActorId<Session> session_;
|
||||
@ -235,9 +239,15 @@ void Session::on_online(bool online_flag) {
|
||||
loop();
|
||||
}
|
||||
|
||||
void Session::on_logging_out(bool logging_out_flag) {
|
||||
logging_out_flag_ = logging_out_flag;
|
||||
connection_online_update(true);
|
||||
loop();
|
||||
}
|
||||
|
||||
void Session::connection_online_update(bool force) {
|
||||
bool new_connection_online_flag =
|
||||
online_flag_ && (has_queries() || last_activity_timestamp_ + 10 > Time::now_cached() || is_main_);
|
||||
bool new_connection_online_flag = (online_flag_ || logging_out_flag_) &&
|
||||
(has_queries() || last_activity_timestamp_ + 10 > Time::now_cached() || is_main_);
|
||||
if (connection_online_flag_ == new_connection_online_flag && !force) {
|
||||
return;
|
||||
}
|
||||
|
@ -69,9 +69,9 @@ class Session final
|
||||
Session(unique_ptr<Callback> callback, std::shared_ptr<AuthDataShared> shared_auth_data, int32 raw_dc_id, int32 dc_id,
|
||||
bool is_main, bool use_pfs, bool is_cdn, bool need_destroy, const mtproto::AuthKey &tmp_auth_key,
|
||||
const vector<mtproto::ServerSalt> &server_salts);
|
||||
|
||||
void send(NetQueryPtr &&query);
|
||||
void on_network(bool network_flag, uint32 network_generation);
|
||||
void on_online(bool online_flag);
|
||||
|
||||
void close();
|
||||
|
||||
private:
|
||||
@ -111,6 +111,7 @@ class Session final
|
||||
bool was_on_network_ = false;
|
||||
bool network_flag_ = false;
|
||||
bool online_flag_ = false;
|
||||
bool logging_out_flag_ = false;
|
||||
bool connection_online_flag_ = false;
|
||||
uint32 network_generation_ = 0;
|
||||
uint64 being_binded_tmp_auth_key_id_ = 0;
|
||||
@ -195,6 +196,10 @@ class Session final
|
||||
|
||||
Status on_pong() final;
|
||||
|
||||
void on_network(bool network_flag, uint32 network_generation);
|
||||
void on_online(bool online_flag);
|
||||
void on_logging_out(bool logging_out_flag);
|
||||
|
||||
void on_auth_key_updated() final;
|
||||
void on_tmp_auth_key_updated() final;
|
||||
void on_server_salt_updated() final;
|
||||
|
Loading…
x
Reference in New Issue
Block a user