From b4ad3d9c6f530315241b51905a18cce950a7068a Mon Sep 17 00:00:00 2001 From: Maple Date: Sun, 26 Apr 2026 00:24:54 +0200 Subject: [PATCH 1/3] inform about people coming online --- rnex-core/src/nex/friends_handler.rs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/rnex-core/src/nex/friends_handler.rs b/rnex-core/src/nex/friends_handler.rs index 941b747..f299593 100644 --- a/rnex-core/src/nex/friends_handler.rs +++ b/rnex-core/src/nex/friends_handler.rs @@ -139,6 +139,9 @@ impl Friends for FriendsUser { let Ok(any_self_fr_info) = Any::new(&self_fr_info) else { return Err(ErrorCode::RendezVous_ControlScriptFailure); }; + let Ok(any_self_presence) = Any::new(&self_fr_info.presence) else { + return Err(ErrorCode::RendezVous_ControlScriptFailure); + }; drop(data); let mut fr_list = vec![FriendInfo { @@ -227,6 +230,18 @@ impl Friends for FriendsUser { .await; }); } else { + let data = any_self_presence.clone(); + let u = u.clone(); + let sender = self.pid; + spawn(async move { + u.remote + .process_nintendo_notification_event_2(NintendoNotificationEvent { + event_type: 24, + sender, + data, + }) + .await; + }); drop(fr); } } @@ -263,18 +278,22 @@ impl Friends for FriendsUser { } async fn update_presence(&self, presence: NintendoPresenceV2) -> Result<(), ErrorCode> { + info!("user updated presence: {:?}", presence); let mut data = self.data.write().await; let Some(inner_data) = data.as_mut() else { + log::error!("unable to get presence data"); return Err(ErrorCode::RendezVous_PermissionDenied); }; inner_data.presence = presence; let Ok(any_self_fr_info) = Any::new(&inner_data.presence) else { + log::error!("unable to create presence any data holder"); return Err(ErrorCode::RendezVous_ControlScriptFailure); }; drop(data); let users = self.fm.users.read().await; for u in users.deref().iter().filter_map(|u| u.upgrade()) { + info!("sending presence update"); u.remote .process_nintendo_notification_event_2(NintendoNotificationEvent { event_type: 24, From 21e3227347937ce09648d71af5d1adc815585af4 Mon Sep 17 00:00:00 2001 From: Maple Date: Sun, 26 Apr 2026 01:06:05 +0200 Subject: [PATCH 2/3] add user limit --- rnex-core/src/nex/friends_handler.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/rnex-core/src/nex/friends_handler.rs b/rnex-core/src/nex/friends_handler.rs index f299593..71cd652 100644 --- a/rnex-core/src/nex/friends_handler.rs +++ b/rnex-core/src/nex/friends_handler.rs @@ -200,6 +200,9 @@ impl Friends for FriendsUser { println!("acquiring user and current friends locks"); let users = self.fm.users.read().await; + if users.len() >= 100 { + return Err(ErrorCode::RendezVous_ConnectionFailure); + } println!("started summing users"); for u in users.deref().iter().filter_map(|u| u.upgrade()) { let data = u.data.read().await; @@ -327,6 +330,10 @@ impl Secure for FriendsUser { station_urls: Vec, ) -> Result<(QResult, u32, StationUrl), ErrorCode> { let cid = self.fm.next_cid(); + let users = self.fm.users.read().await; + if users.len() >= 100 { + return Err(ErrorCode::RendezVous_ConnectionFailure); + } Ok(( QResult::success(ErrorCode::Core_Unknown), cid, From f5d4c56ce0336c731f6244ef051f46682e1a443c Mon Sep 17 00:00:00 2001 From: Maple Date: Sun, 26 Apr 2026 01:46:46 +0200 Subject: [PATCH 3/3] fix team counting --- rnex-core/src/nex/user.rs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/rnex-core/src/nex/user.rs b/rnex-core/src/nex/user.rs index 57c36d8..052ab53 100644 --- a/rnex-core/src/nex/user.rs +++ b/rnex-core/src/nex/user.rs @@ -230,10 +230,8 @@ impl MatchmakeExtension for User { .await?; let mut session = session.lock().await; - if session.session.user_password_enabled { - if join_session_param.user_password != session.session.user_password { - return Err(ErrorCode::RendezVous_InvalidPassword); - } + if join_session_param.user_password != session.session.user_password { + return Err(ErrorCode::RendezVous_InvalidPassword); } session @@ -656,7 +654,7 @@ impl Ranking for User { let team_votes = fetch_team_votes(fest_id)?; let mut wins = vec![0u32, 0u32]; for r in &results { - let won_team = r.team_id ^ (!r.team_win); + let won_team = (r.team_id ^ (!r.team_win)) & 1; if let Some(team) = wins.get_mut(won_team as usize) { *team += 1 };