diff options
| author | pepper <3782201+rohvani@users.noreply.github.com> | 2026-08-31 18:18:17 -0400 |
|---|---|---|
| committer | pepper <3782201+rohvani@users.noreply.github.com> | 2026-08-31 18:19:17 -0400 |
| commit | 38635da94eb5e7f2356305ffd38567199e65528f (patch) | |
| tree | 5dfa73f191331dc4400ffe6f40b1f8968e8616f1 /indra/newview/llimprocessing.cpp | |
| parent | ce1b7583c99eb8155fd6b1621b3976fb31cac913 (diff) | |
Scope friendship offer deduplication by sender
Treat an existing actionable friendship panel as a duplicate only when its
notification belongs to the same resident. This preserves same-sender
suppression and dead-panel replay behavior while allowing simultaneous offline
requests from different residents to render in their own sessions.
Validated with the RelWithDebInfo secondlife-bin build.
Diffstat (limited to 'indra/newview/llimprocessing.cpp')
| -rw-r--r-- | indra/newview/llimprocessing.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/indra/newview/llimprocessing.cpp b/indra/newview/llimprocessing.cpp index eee44b7ae0..bd5a2cddee 100644 --- a/indra/newview/llimprocessing.cpp +++ b/indra/newview/llimprocessing.cpp @@ -1453,9 +1453,12 @@ void LLIMProcessing::processNewMessage(LLUUID from_id, for (auto& panel : LLToastNotifyPanel::instance_snapshot()) { const std::string& notification_name = panel.getNotificationName(); - // Panels pending deferred deletion no longer suppress a live offer. + LLNotificationPtr panel_notification = LLNotificationsUtil::find(panel.getID()); + // Only a live actionable offer from this sender makes the packet a duplicate. if (!panel.isDead() && notification_name == "OfferFriendship" + && panel_notification + && panel_notification->getPayload()["from_id"].asUUID() == from_id && panel.isControlPanelEnabled()) { add_notification = false; |
