From 6dfd405d90869f3701211b9c0d3083407ff5e9ad Mon Sep 17 00:00:00 2001 From: Kp Date: Sun, 23 Oct 2022 23:00:24 +0000 Subject: [PATCH] Pass std::span to net_udp_process_version_deny --- similar/main/net_udp.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/similar/main/net_udp.cpp b/similar/main/net_udp.cpp index 07d27b629..5bf0e92b6 100644 --- a/similar/main/net_udp.cpp +++ b/similar/main/net_udp.cpp @@ -150,6 +150,17 @@ constexpr std::size_t upid_length = 10; template <> constexpr std::size_t upid_length = 49; +template +using upid_rspan = std::span>; + +template > +static std::optional build_upid_rspan(const std::span buf) +{ + if (buf.size() != R::extent) + return std::nullopt; + return buf.template first(); +} + } } @@ -2832,7 +2843,7 @@ void dispatch_table::send_endlevel_packet() const namespace { -static void net_udp_process_version_deny(const uint8_t *const data, const _sockaddr &) +static void net_udp_process_version_deny(const upid_rspan data, const _sockaddr &) { Netgame.protocol.udp.program_iver[0] = GET_INTEL_SHORT(&data[1]); Netgame.protocol.udp.program_iver[1] = GET_INTEL_SHORT(&data[3]); @@ -3321,9 +3332,10 @@ static void net_udp_process_packet(const d_level_shared_robot_info_state &LevelS switch (*cmd) { case upid::version_deny: - if (multi_i_am_master() || length != upid_length) + if (multi_i_am_master()) break; - net_udp_process_version_deny(data, sender_addr); + if (const auto s = build_upid_rspan(buf)) + net_udp_process_version_deny(*s, sender_addr); break; case upid::game_info_req: {