Return error 406 if notification is not supported from processPushNotification.
GitOrigin-RevId: 6913bdc376e4af14848ed0f403f6807ae7a84b8f
This commit is contained in:
parent
606b427673
commit
b548f222dc
@ -11776,7 +11776,8 @@ void MessagesManager::on_get_common_dialogs(UserId user_id, int32 offset_chat_id
|
|||||||
td_->contacts_manager_->on_update_user_common_chat_count(user_id, total_count);
|
td_->contacts_manager_->on_update_user_common_chat_count(user_id, total_count);
|
||||||
|
|
||||||
auto &common_dialogs = found_common_dialogs_[user_id];
|
auto &common_dialogs = found_common_dialogs_[user_id];
|
||||||
if (common_dialogs.is_outdated && offset_chat_id == 0 && common_dialogs.dialog_ids.size() < static_cast<size_t>(MAX_GET_DIALOGS)) {
|
if (common_dialogs.is_outdated && offset_chat_id == 0 &&
|
||||||
|
common_dialogs.dialog_ids.size() < static_cast<size_t>(MAX_GET_DIALOGS)) {
|
||||||
// drop outdated cache if possible
|
// drop outdated cache if possible
|
||||||
common_dialogs = CommonDialogs();
|
common_dialogs = CommonDialogs();
|
||||||
}
|
}
|
||||||
@ -18287,7 +18288,7 @@ Result<MessagesManager::MessagePushNotificationInfo> MessagesManager::get_messag
|
|||||||
|
|
||||||
Dialog *d = get_dialog_force(dialog_id);
|
Dialog *d = get_dialog_force(dialog_id);
|
||||||
if (d == nullptr) {
|
if (d == nullptr) {
|
||||||
return Status::Error("Ignore notification in unknown chat");
|
return Status::Error(406, "Ignore notification in unknown chat");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool is_new_pinned = is_pinned && message_id.is_valid() && message_id.get() > d->max_notification_message_id.get();
|
bool is_new_pinned = is_pinned && message_id.is_valid() && message_id.get() > d->max_notification_message_id.get();
|
||||||
@ -18308,7 +18309,7 @@ Result<MessagesManager::MessagePushNotificationInfo> MessagesManager::get_messag
|
|||||||
if (random_id != 0) {
|
if (random_id != 0) {
|
||||||
CHECK(dialog_id.get_type() == DialogType::SecretChat);
|
CHECK(dialog_id.get_type() == DialogType::SecretChat);
|
||||||
if (get_message_id_by_random_id(d, random_id, "need_message_push_notification").is_valid()) {
|
if (get_message_id_by_random_id(d, random_id, "need_message_push_notification").is_valid()) {
|
||||||
return Status::Error("Ignore notification about known secret message");
|
return Status::Error(406, "Ignore notification about known secret message");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2551,6 +2551,10 @@ void NotificationManager::process_push_notification(string payload, Promise<Unit
|
|||||||
if (receiver_id == 0 || receiver_id == G()->get_my_id()) {
|
if (receiver_id == 0 || receiver_id == G()->get_my_id()) {
|
||||||
auto status = process_push_notification_payload(payload);
|
auto status = process_push_notification_payload(payload);
|
||||||
if (status.is_error()) {
|
if (status.is_error()) {
|
||||||
|
if (status.code() == 406) {
|
||||||
|
return promise.set_error(std::move(status));
|
||||||
|
}
|
||||||
|
|
||||||
LOG(ERROR) << "Receive error " << status << ", while parsing push payload " << payload;
|
LOG(ERROR) << "Receive error " << status << ", while parsing push payload " << payload;
|
||||||
return promise.set_error(Status::Error(400, status.message()));
|
return promise.set_error(Status::Error(400, status.message()));
|
||||||
}
|
}
|
||||||
@ -3120,6 +3124,9 @@ Status NotificationManager::process_message_push_notification(DialogId dialog_id
|
|||||||
if (logevent_id != 0) {
|
if (logevent_id != 0) {
|
||||||
binlog_erase(G()->td_db()->get_binlog(), logevent_id);
|
binlog_erase(G()->td_db()->get_binlog(), logevent_id);
|
||||||
}
|
}
|
||||||
|
if (r_info.error().code() == 406) {
|
||||||
|
return r_info.move_as_error();
|
||||||
|
}
|
||||||
return Status::OK();
|
return Status::OK();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3130,8 +3137,9 @@ Status NotificationManager::process_message_push_notification(DialogId dialog_id
|
|||||||
VLOG(notifications) << "Skip notification in secret " << dialog_id;
|
VLOG(notifications) << "Skip notification in secret " << dialog_id;
|
||||||
// TODO support secret chat notifications
|
// TODO support secret chat notifications
|
||||||
// main problem: there is no message_id yet
|
// main problem: there is no message_id yet
|
||||||
|
// also don't forget to delete newSecretChat notification
|
||||||
CHECK(logevent_id == 0);
|
CHECK(logevent_id == 0);
|
||||||
return Status::OK();
|
return Status::Error(406, "Secret chat push notifications are unsupported");
|
||||||
}
|
}
|
||||||
CHECK(random_id == 0);
|
CHECK(random_id == 0);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user