Add define TD_TEST_VERIFICATION.

This commit is contained in:
levlam 2024-05-10 01:01:28 +03:00
parent 76ece1b6e0
commit 5e872c3f57
3 changed files with 15 additions and 3 deletions

View File

@ -240,6 +240,10 @@ class NetQuery final : public TsListNode<NetQueryDebug> {
void add_verification_prefix(const string &prefix);
bool has_verification_prefix() const {
return verification_prefix_length_ != 0;
}
private:
State state_ = State::Empty;
Type type_ = Type::Common;

View File

@ -32,6 +32,8 @@
namespace td {
#define TD_TEST_VERIFICATION 0
void NetQueryDispatcher::complete_net_query(NetQueryPtr net_query) {
auto callback = net_query->move_callback();
if (callback.empty()) {
@ -67,6 +69,12 @@ void NetQueryDispatcher::dispatch(NetQueryPtr net_query) {
net_query->set_error(Status::Error(429, "Too Many Requests: retry after 10"));
return complete_net_query(std::move(net_query));
}
#if TD_TEST_VERIFICATION
if (net_query->tl_constructor() == telegram_api::account_getAuthorizations::ID &&
!net_query->has_verification_prefix() && !net_query->is_ready()) {
net_query->set_error(Status::Error(403, "APNS_VERIFY_CHECK_ABCD"));
}
#endif
if (!net_query->in_sequence_dispatcher() && !net_query->get_chain_ids().empty()) {
net_query->debug("sent to main sequence dispatcher");
@ -93,7 +101,7 @@ void NetQueryDispatcher::dispatch(NetQueryPtr net_query) {
return;
}
return send_closure_later(delayer_, &NetQueryDelayer::delay, std::move(net_query));
#if TD_ANDROID || TD_DARWIN_IOS || TD_DARWIN_VISION_OS || TD_DARWIN_WATCH_OS
#if TD_ANDROID || TD_DARWIN_IOS || TD_DARWIN_VISION_OS || TD_DARWIN_WATCH_OS || TD_TEST_VERIFICATION
} else if (code == 403) {
#if TD_ANDROID
Slice prefix("INTEGRITY_CHECK_CLASSIC_");
@ -343,7 +351,7 @@ NetQueryDispatcher::NetQueryDispatcher(const std::function<ActorShared<>()> &cre
main_dc_id_ = to_integer<int32>(s_main_dc_id);
}
delayer_ = create_actor<NetQueryDelayer>("NetQueryDelayer", create_reference());
#if TD_ANDROID || TD_DARWIN_IOS || TD_DARWIN_VISION_OS || TD_DARWIN_WATCH_OS
#if TD_ANDROID || TD_DARWIN_IOS || TD_DARWIN_VISION_OS || TD_DARWIN_WATCH_OS || TD_TEST_VERIFICATION
verifier_ = create_actor<NetQueryVerifier>("NetQueryVerifier", create_reference());
#endif
dc_auth_manager_ =

View File

@ -57,8 +57,8 @@ void NetQueryVerifier::set_verification_token(int64 query_id, string &&token, Pr
auto real_size = storer.store(MutableSlice(prefix_str).ubegin());
CHECK(real_size == prefix_str.size());
query->add_verification_prefix(prefix_str);
query->resend();
}
query->resend();
G()->net_query_dispatcher().dispatch(std::move(query));
}