Improve source for error suppression.

This commit is contained in:
levlam 2022-11-07 15:52:01 +03:00
parent ab14065168
commit cc9de08be3

View File

@ -487,6 +487,7 @@ class GetChannelMessagesQuery final : public Td::ResultHandler {
Promise<Unit> promise_;
ChannelId channel_id_;
MessageId last_new_message_id_;
bool can_be_inaccessible_ = false;
public:
explicit GetChannelMessagesQuery(Promise<Unit> &&promise) : promise_(std::move(promise)) {
@ -496,6 +497,7 @@ class GetChannelMessagesQuery final : public Td::ResultHandler {
vector<tl_object_ptr<telegram_api::InputMessage>> &&message_ids, MessageId last_new_message_id) {
channel_id_ = channel_id;
last_new_message_id_ = last_new_message_id;
can_be_inaccessible_ = message_ids.size() == 1 && message_ids[0]->get_id() != telegram_api::inputMessageID::ID;
CHECK(input_channel != nullptr);
send_query(G()->net_query_creator().create(
telegram_api::channels_getMessages(std::move(input_channel), std::move(message_ids))));
@ -523,16 +525,17 @@ class GetChannelMessagesQuery final : public Td::ResultHandler {
}
td_->messages_manager_->on_get_empty_messages(DialogId(channel_id_), empty_message_ids);
}
const char *source = can_be_inaccessible_ ? "GetRepliedChannelMessageQuery" : "GetChannelMessagesQuery";
td_->messages_manager_->get_channel_difference_if_needed(
DialogId(channel_id_), std::move(info),
PromiseCreator::lambda([actor_id = td_->messages_manager_actor_.get(),
PromiseCreator::lambda([actor_id = td_->messages_manager_actor_.get(), source,
promise = std::move(promise_)](Result<MessagesManager::MessagesInfo> &&result) mutable {
if (result.is_error()) {
promise.set_error(result.move_as_error());
} else {
auto info = result.move_as_ok();
send_closure(actor_id, &MessagesManager::on_get_messages, std::move(info.messages),
info.is_channel_messages, false, std::move(promise), "GetChannelMessagesQuery");
info.is_channel_messages, false, std::move(promise), source);
}
}));
}
@ -35674,9 +35677,9 @@ MessagesManager::Message *MessagesManager::add_message_to_dialog(Dialog *d, uniq
auto next_message = *it;
if (next_message != nullptr) {
if (next_message->message_id.is_server() &&
!(td_->auth_manager_->is_bot() && Slice(source) == Slice("GetChannelMessagesQuery"))) {
LOG(ERROR) << "Can't attach " << m->message_id << " from " << source << " from "
<< (m->from_database ? "database" : "server") << " before " << next_message->message_id
!(td_->auth_manager_->is_bot() && Slice(source) == Slice("GetRepliedChannelMessageQuery"))) {
LOG(ERROR) << "Can't attach " << m->message_id << " of type " << m->content->get_type() << " from " << source
<< " from " << (m->from_database ? "database" : "server") << " before " << next_message->message_id
<< " and after " << previous_message->message_id << " in " << dialog_id;
dump_debug_message_op(d);
}