Remove unsafe non-const NetQuery accessors.
This commit is contained in:
parent
eb06c93532
commit
b90bc7be4b
@ -244,7 +244,7 @@ void PhoneNumberManager::on_result(NetQueryPtr result) {
|
|||||||
net_query_type_ = NetQueryType::None;
|
net_query_type_ = NetQueryType::None;
|
||||||
if (result->is_error()) {
|
if (result->is_error()) {
|
||||||
if (query_id_ != 0) {
|
if (query_id_ != 0) {
|
||||||
on_query_error(std::move(result->error()));
|
on_query_error(result->move_as_error());
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -3104,14 +3104,16 @@ void Td::on_result(NetQueryPtr query) {
|
|||||||
if (handler != nullptr) {
|
if (handler != nullptr) {
|
||||||
CHECK(query->is_ready());
|
CHECK(query->is_ready());
|
||||||
if (query->is_ok()) {
|
if (query->is_ok()) {
|
||||||
handler->on_result(std::move(query->ok()));
|
handler->on_result(query->move_as_ok());
|
||||||
} else {
|
} else {
|
||||||
handler->on_error(std::move(query->error()));
|
handler->on_error(query->move_as_error());
|
||||||
}
|
}
|
||||||
} else if (!query->is_ok() || query->ok_tl_constructor() != telegram_api::upload_file::ID) {
|
} else {
|
||||||
LOG(WARNING) << query << " is ignored: no handlers found";
|
if (!query->is_ok() || query->ok_tl_constructor() != telegram_api::upload_file::ID) {
|
||||||
|
LOG(WARNING) << query << " is ignored: no handlers found";
|
||||||
|
}
|
||||||
|
query->clear();
|
||||||
}
|
}
|
||||||
query->clear();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Td::on_connection_state_changed(ConnectionState new_state) {
|
void Td::on_connection_state_changed(ConnectionState new_state) {
|
||||||
|
@ -95,25 +95,15 @@ class NetQuery final : public TsListNode<NetQueryDebug> {
|
|||||||
resend(dc_id_);
|
resend(dc_id_);
|
||||||
}
|
}
|
||||||
|
|
||||||
BufferSlice &query() {
|
const BufferSlice &query() const {
|
||||||
return query_;
|
return query_;
|
||||||
}
|
}
|
||||||
|
|
||||||
BufferSlice &ok() {
|
|
||||||
CHECK(state_ == State::OK);
|
|
||||||
return answer_;
|
|
||||||
}
|
|
||||||
|
|
||||||
const BufferSlice &ok() const {
|
const BufferSlice &ok() const {
|
||||||
CHECK(state_ == State::OK);
|
CHECK(state_ == State::OK);
|
||||||
return answer_;
|
return answer_;
|
||||||
}
|
}
|
||||||
|
|
||||||
Status &error() {
|
|
||||||
CHECK(state_ == State::Error);
|
|
||||||
return status_;
|
|
||||||
}
|
|
||||||
|
|
||||||
const Status &error() const {
|
const Status &error() const {
|
||||||
CHECK(state_ == State::Error);
|
CHECK(state_ == State::Error);
|
||||||
return status_;
|
return status_;
|
||||||
@ -124,6 +114,7 @@ class NetQuery final : public TsListNode<NetQueryDebug> {
|
|||||||
clear();
|
clear();
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
Status move_as_error() TD_WARN_UNUSED_RESULT {
|
Status move_as_error() TD_WARN_UNUSED_RESULT {
|
||||||
auto status = std::move(status_);
|
auto status = std::move(status_);
|
||||||
clear();
|
clear();
|
||||||
|
@ -58,7 +58,7 @@ void NetQueryDelayer::delay(NetQueryPtr query) {
|
|||||||
query->last_timeout_ = timeout;
|
query->last_timeout_ = timeout;
|
||||||
LOG(INFO) << "Set total_timeout to " << query->total_timeout_ << " for " << query->id();
|
LOG(INFO) << "Set total_timeout to " << query->total_timeout_ << " for " << query->id();
|
||||||
|
|
||||||
auto error = query->error().move_as_error();
|
auto error = query->error().clone();
|
||||||
query->resend();
|
query->resend();
|
||||||
|
|
||||||
// Fix for infinity flood control
|
// Fix for infinity flood control
|
||||||
|
@ -391,7 +391,7 @@ void Session::on_bind_result(NetQueryPtr query) {
|
|||||||
|
|
||||||
Status status;
|
Status status;
|
||||||
if (query->is_error()) {
|
if (query->is_error()) {
|
||||||
status = std::move(query->error());
|
status = query->move_as_error();
|
||||||
if (status.code() == 400 && status.message() == "ENCRYPTED_MESSAGE_INVALID") {
|
if (status.code() == 400 && status.message() == "ENCRYPTED_MESSAGE_INVALID") {
|
||||||
auto server_time = G()->server_time();
|
auto server_time = G()->server_time();
|
||||||
auto auth_key_creation_date = auth_data_.get_main_auth_key().created_at();
|
auto auth_key_creation_date = auth_data_.get_main_auth_key().created_at();
|
||||||
@ -424,7 +424,8 @@ void Session::on_bind_result(NetQueryPtr query) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
auto r_flag = fetch_result<telegram_api::auth_bindTempAuthKey>(query->ok());
|
auto answer = query->move_as_ok();
|
||||||
|
auto r_flag = fetch_result<telegram_api::auth_bindTempAuthKey>(answer);
|
||||||
if (r_flag.is_error()) {
|
if (r_flag.is_error()) {
|
||||||
status = r_flag.move_as_error();
|
status = r_flag.move_as_error();
|
||||||
} else if (!r_flag.ok()) {
|
} else if (!r_flag.ok()) {
|
||||||
@ -444,7 +445,6 @@ void Session::on_bind_result(NetQueryPtr query) {
|
|||||||
connection_close(&long_poll_connection_);
|
connection_close(&long_poll_connection_);
|
||||||
}
|
}
|
||||||
|
|
||||||
query->clear();
|
|
||||||
yield();
|
yield();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -455,9 +455,10 @@ void Session::on_check_key_result(NetQueryPtr query) {
|
|||||||
|
|
||||||
Status status;
|
Status status;
|
||||||
if (query->is_error()) {
|
if (query->is_error()) {
|
||||||
status = std::move(query->error());
|
status = query->move_as_error();
|
||||||
} else {
|
} else {
|
||||||
auto r_flag = fetch_result<telegram_api::help_getNearestDc>(query->ok());
|
auto answer = query->move_as_ok();
|
||||||
|
auto r_flag = fetch_result<telegram_api::help_getNearestDc>(answer);
|
||||||
if (r_flag.is_error()) {
|
if (r_flag.is_error()) {
|
||||||
status = r_flag.move_as_error();
|
status = r_flag.move_as_error();
|
||||||
}
|
}
|
||||||
@ -472,7 +473,6 @@ void Session::on_check_key_result(NetQueryPtr query) {
|
|||||||
connection_close(&long_poll_connection_);
|
connection_close(&long_poll_connection_);
|
||||||
}
|
}
|
||||||
|
|
||||||
query->clear();
|
|
||||||
yield();
|
yield();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user