mirror of
https://github.com/Swordpdf/ProsperoEden.git
synced 2026-10-19 04:09:47 -05:00
* Validate Eden room packets and add offline interoperability checks * Bound proxy decompression and receive queues * Add asynchronous room controller and cancellable connections * Wire room settings and lifecycle into the launcher * Bound outgoing room queues and test stalled peers * Own room receive callbacks per proxy socket * Support proxy polling and release sockets between games * Retain guest sockets across descriptor changes * Record offline qualification and freeze fresh candidates * Record room server and read-only console preflight evidence * Show room members and reported games in a scrollable list * Document Tailscale capabilities and verify room rejection recovery * Record remaining hardware validation prerequisites * Record successful room transport over Tailscale * Record verified console deployment for operator testing * Use a supported keyboard type for masked password entry * Remember room passwords and report connection failures * Report ENet handshake errors and packet counts * Parse numeric room addresses before invoking the resolver * Record operator-confirmed PS5 room connection * Use the room virtual interface for guest wireless networking * Compose room interfaces with the native getifaddrs adaptation * Exercise LDN discovery and peer connection through a real room * Record PS5 Mario Kart wireless lobby validation * Record live LDN traffic, recovery and Tailscale component validation * Prepare official desktop reference and correct room interface guidance * Record public room connection and native DNS failure * Show multiplayer connection status on home and settings * Make external Tailscale qualification optional * Invalidate network compiler cache for generated room headers * Use the pinned Boost version in multiplayer host checks * Show room server ping in the game overlay * Record verified ping overlay deployment to PS5 * Respect detailed logging settings for multiplayer diagnostics * Make the room socket non-blocking on the console so the member loop can send the join request * Add public room browser beside private multiplayer connection * Keep multiplayer destination choice selectable while connected * Record local public browser validation and deferred console test * Explain multiplayer connection failures in a persistent UI panel * Define idle-only multiplayer validation on console .40 * Record console .40 public directory and private room validation * Update public room notes for PR publication * Keep the saved private room on public joins, save the private form as typed, and harden the public room list * Translate the multiplayer and public room texts in all 29 languages
32 lines
1.0 KiB
C++
32 lines
1.0 KiB
C++
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
#pragma once
|
|
#include <cstring>
|
|
#include "core/hle/service/ldn/ldn_types.h"
|
|
|
|
namespace Eden::Multiplayer {
|
|
inline bool ValidLdnPacket(const Network::LDNPacket& packet) {
|
|
using namespace Service::LDN;
|
|
using Network::LDNPacketType;
|
|
switch (packet.type) {
|
|
case LDNPacketType::Scan:
|
|
case LDNPacketType::DestroyNetwork:
|
|
return packet.data.empty();
|
|
case LDNPacketType::ScanResp:
|
|
case LDNPacketType::SyncNetwork: {
|
|
if (packet.data.size() != sizeof(NetworkInfo)) return false;
|
|
NetworkInfo info{};
|
|
std::memcpy(&info, packet.data.data(), sizeof(info));
|
|
if (info.ldn.node_count_max > NodeCountMax ||
|
|
info.ldn.node_count > info.ldn.node_count_max ||
|
|
info.ldn.advertise_data_size > AdvertiseDataSizeMax) return false;
|
|
return true;
|
|
}
|
|
case LDNPacketType::Connect:
|
|
case LDNPacketType::Disconnect:
|
|
return packet.data.size() == sizeof(NodeInfo);
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
} // namespace Eden::Multiplayer
|