Skip to content

Commit 7303386

Browse files
committed
Improve edit generation checks.
1 parent 85562e2 commit 7303386

2 files changed

Lines changed: 17 additions & 18 deletions

File tree

td/telegram/MessagesManager.cpp

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21877,22 +21877,20 @@ void MessagesManager::on_cover_upload(DialogId dialog_id, MessageId message_id,
2187721877

2187821878
MessageFullId message_full_id{dialog_id, message_id};
2187921879
const Message *m = get_message(message_full_id);
21880-
if (m == nullptr) {
21880+
bool is_edit = m->message_id.is_any_server();
21881+
if (m == nullptr || (is_edit && m->edit_generation != edit_generation)) {
2188121882
// message has already been deleted by the user or sent to inaccessible channel, do not need to send or edit it
2188221883
// file upload should be already canceled in cancel_send_message_query
2188321884
LOG(INFO) << "Message with a cover has already been deleted";
2188421885
return;
2188521886
}
2188621887

21887-
bool is_edit = m->message_id.is_any_server();
2188821888
if (!is_edit && result.is_ok() && !is_ephemeral_message(m)) {
2188921889
result = can_send_message(dialog_id);
2189021890
}
2189121891
if (result.is_error()) {
2189221892
if (is_edit) {
21893-
if (m->edit_generation == edit_generation) {
21894-
fail_edit_message_media(message_full_id, result.move_as_error());
21895-
}
21893+
fail_edit_message_media(message_full_id, result.move_as_error());
2189621894
} else {
2189721895
fail_send_message(message_full_id, result.move_as_error());
2189821896
}
@@ -22260,7 +22258,8 @@ void MessagesManager::on_upload_message_media_success(DialogId dialog_id, Messag
2226022258

2226122259
CHECK(message_id.is_valid() || message_id.is_valid_scheduled());
2226222260
Message *m = get_message(d, message_id);
22263-
if (m == nullptr || (m->message_id.is_any_server() && m->edit_generation != edit_generation)) {
22261+
auto is_edit = m->message_id.is_any_server();
22262+
if (m == nullptr || (is_edit && m->edit_generation != edit_generation)) {
2226422263
// message has already been deleted by the user or sent to inaccessible channel
2226522264
// don't need to send error to the user, because the message has already been deleted
2226622265
// and there is nothing to be deleted from the server
@@ -22273,7 +22272,6 @@ void MessagesManager::on_upload_message_media_success(DialogId dialog_id, Messag
2227322272
return; // the message should be deleted soon
2227422273
}
2227522274

22276-
auto is_edit = message_id.is_any_server();
2227722275
EditedMessage *edited_message = nullptr;
2227822276
if (is_edit) {
2227922277
edited_message = edited_messages_.get_pointer(dialog_id, message_id);
@@ -22318,7 +22316,8 @@ void MessagesManager::on_upload_message_media_file_parts_missing(DialogId dialog
2231822316
CHECK(d != nullptr);
2231922317

2232022318
Message *m = get_message(d, message_id);
22321-
if (m == nullptr || (m->message_id.is_any_server() && m->edit_generation != edit_generation)) {
22319+
bool is_edit = m->message_id.is_any_server();
22320+
if (m == nullptr || (is_edit && m->edit_generation != edit_generation)) {
2232222321
// message has already been deleted by the user, sent to inaccessible channel
2232322322
// don't need to send error to the user, because the message has already been deleted
2232422323
// and there is nothing to be deleted from the server
@@ -22342,7 +22341,8 @@ void MessagesManager::on_upload_message_media_fail(DialogId dialog_id, MessageId
2234222341
CHECK(d != nullptr);
2234322342

2234422343
Message *m = get_message(d, message_id);
22345-
if (m == nullptr || (m->message_id.is_any_server() && m->edit_generation != edit_generation)) {
22344+
auto is_edit = m->message_id.is_any_server();
22345+
if (m == nullptr || (is_edit && m->edit_generation != edit_generation)) {
2234622346
// message has already been deleted by the user or sent to inaccessible channel
2234722347
// don't need to send error to the user, because the message has already been deleted
2234822348
// and there is nothing to be deleted from the server
@@ -22372,7 +22372,8 @@ void MessagesManager::on_upload_message_media_finished(int64 media_album_id, Dia
2237222372
return;
2237322373
}
2237422374
const auto *m = get_message({dialog_id, message_id});
22375-
if (m == nullptr || (m->message_id.is_any_server() && m->edit_generation != edit_generation)) {
22375+
auto is_edit = m->message_id.is_any_server();
22376+
if (m == nullptr || (is_edit && m->edit_generation != edit_generation)) {
2237622377
LOG(INFO) << "The message edit generation doesn't match";
2237722378
return;
2237822379
}
@@ -23526,8 +23527,8 @@ void MessagesManager::on_message_media_edited(
2352623527

2352723528
auto edited_message = edited_messages_.get_pointer(dialog_id, message_id);
2352823529
CHECK(edited_message->content_ != nullptr);
23529-
//CHECK(edited_message->file_upload_ids_ == file_upload_ids);
23530-
//CHECK(edited_message->thumbnail_file_upload_ids_ == thumbnail_file_upload_ids);
23530+
CHECK(edited_message->file_upload_ids_ == file_upload_ids);
23531+
CHECK(edited_message->thumbnail_file_upload_ids_ == thumbnail_file_upload_ids);
2353123532
if (result.is_ok()) {
2353223533
// message content has already been replaced from updateEdit{Channel,}Message
2353323534
// need only merge files from edited_content with their uploaded counterparts

td/telegram/QuickReplyManager.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2205,19 +2205,17 @@ void QuickReplyManager::on_cover_upload(QuickReplyMessageFullId message_full_id,
22052205
}
22062206

22072207
const QuickReplyMessage *m = get_message(message_full_id);
2208-
if (m == nullptr) {
2208+
bool is_edit = m->message_id.is_any_server();
2209+
if (m == nullptr || (is_edit && m->edit_generation != edit_generation)) {
22092210
// message has already been deleted by the user, do not need to send or edit it
22102211
LOG(INFO) << "Quick reply message with a cover has already been deleted";
22112212
return;
22122213
}
22132214

22142215
if (result.is_error()) {
2215-
bool is_edit = m->message_id.is_any_server();
22162216
if (is_edit) {
2217-
if (edit_generation == m->edit_generation) {
2218-
fail_edit_quick_reply_message(m->shortcut_id, m->message_id, edit_generation, {}, {}, {}, {}, {}, false, false,
2219-
result.move_as_error());
2220-
}
2217+
fail_edit_quick_reply_message(m->shortcut_id, m->message_id, edit_generation, {}, {}, {}, {}, {}, false, false,
2218+
result.move_as_error());
22212219
} else {
22222220
on_failed_send_quick_reply_messages(m->shortcut_id, {m->random_id}, result.move_as_error());
22232221
}

0 commit comments

Comments
 (0)