From aad338464ed95743fe445a8993a6423e58aeeb4c Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Thu, 18 Jun 2026 21:48:14 +0100 Subject: [PATCH] Advertise RUDP media resend expiry --- vendor/cultnet-rs/examples/cultnet_interop_peer.rs | 2 ++ vendor/cultnet-rs/src/contracts.rs | 2 ++ vendor/cultnet-rs/src/rudp.rs | 4 ++++ vendor/cultnet-rs/src/transport.rs | 1 + vendor/cultnet-rs/tests/cultnet.rs | 14 ++++++++++---- 5 files changed, 19 insertions(+), 4 deletions(-) diff --git a/vendor/cultnet-rs/examples/cultnet_interop_peer.rs b/vendor/cultnet-rs/examples/cultnet_interop_peer.rs index 381e89b..0a00c63 100644 --- a/vendor/cultnet-rs/examples/cultnet_interop_peer.rs +++ b/vendor/cultnet-rs/examples/cultnet_interop_peer.rs @@ -857,6 +857,7 @@ fn tcp_framed_transport_profiles( max_payload_bytes: None, max_fragment_bytes: None, max_pending_reliable_packets: None, + reliable_expire_after_ms: None, }, CultNetTransportChannel { channel_id: "state".to_string(), @@ -865,6 +866,7 @@ fn tcp_framed_transport_profiles( max_payload_bytes: None, max_fragment_bytes: None, max_pending_reliable_packets: None, + reliable_expire_after_ms: None, }, ], }], diff --git a/vendor/cultnet-rs/src/contracts.rs b/vendor/cultnet-rs/src/contracts.rs index a7d999e..460764d 100644 --- a/vendor/cultnet-rs/src/contracts.rs +++ b/vendor/cultnet-rs/src/contracts.rs @@ -128,6 +128,8 @@ pub struct CultNetTransportChannel { pub max_fragment_bytes: Option, #[serde(default, skip_serializing_if = "Option::is_none")] pub max_pending_reliable_packets: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub reliable_expire_after_ms: Option, } #[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)] diff --git a/vendor/cultnet-rs/src/rudp.rs b/vendor/cultnet-rs/src/rudp.rs index 64b912b..7e3cd1e 100644 --- a/vendor/cultnet-rs/src/rudp.rs +++ b/vendor/cultnet-rs/src/rudp.rs @@ -1068,6 +1068,7 @@ pub fn create_rudp_transport_profile( max_payload_bytes: options.max_payload_bytes, max_fragment_bytes: options.max_fragment_bytes, max_pending_reliable_packets: options.max_pending_reliable_packets, + reliable_expire_after_ms: None, }, CultNetTransportChannel { channel_id: "latest".to_string(), @@ -1076,6 +1077,7 @@ pub fn create_rudp_transport_profile( max_payload_bytes: options.max_payload_bytes, max_fragment_bytes: options.max_fragment_bytes, max_pending_reliable_packets: options.max_pending_reliable_packets, + reliable_expire_after_ms: None, }, CultNetTransportChannel { channel_id: "realtime".to_string(), @@ -1084,6 +1086,7 @@ pub fn create_rudp_transport_profile( max_payload_bytes: options.max_payload_bytes, max_fragment_bytes: options.max_fragment_bytes, max_pending_reliable_packets: options.max_pending_reliable_packets, + reliable_expire_after_ms: None, }, CultNetTransportChannel { channel_id: "media".to_string(), @@ -1092,6 +1095,7 @@ pub fn create_rudp_transport_profile( max_payload_bytes: options.max_payload_bytes, max_fragment_bytes: options.max_fragment_bytes, max_pending_reliable_packets: options.max_pending_reliable_packets, + reliable_expire_after_ms: Some(MEDIA_RELIABLE_EXPIRE_AFTER_MS), }, ], }], diff --git a/vendor/cultnet-rs/src/transport.rs b/vendor/cultnet-rs/src/transport.rs index e32dec7..55e0097 100644 --- a/vendor/cultnet-rs/src/transport.rs +++ b/vendor/cultnet-rs/src/transport.rs @@ -124,6 +124,7 @@ pub fn create_tcp_framed_transport_profile( max_payload_bytes: options.max_payload_bytes, max_fragment_bytes: options.max_fragment_bytes, max_pending_reliable_packets: None, + reliable_expire_after_ms: None, }], }], } diff --git a/vendor/cultnet-rs/tests/cultnet.rs b/vendor/cultnet-rs/tests/cultnet.rs index ef574da..532b89b 100644 --- a/vendor/cultnet-rs/tests/cultnet.rs +++ b/vendor/cultnet-rs/tests/cultnet.rs @@ -165,6 +165,7 @@ fn cultnet_schema_messages_round_trip_through_messagepack_frames() -> Result<()> max_payload_bytes: None, max_fragment_bytes: None, max_pending_reliable_packets: None, + reliable_expire_after_ms: None, }], }], }]), @@ -287,6 +288,7 @@ fn rudp_transport_profile_advertises_state_and_realtime_channels() { channel.delivery, channel.ordering, channel.max_pending_reliable_packets, + channel.reliable_expire_after_ms, ) }) .collect::>(); @@ -297,25 +299,29 @@ fn rudp_transport_profile_advertises_state_and_realtime_channels() { "schema", CultNetTransportDelivery::Reliable, CultNetTransportOrdering::Ordered, - Some(64) + Some(64), + None ), ( "latest", CultNetTransportDelivery::Unreliable, CultNetTransportOrdering::Sequenced, - Some(64) + Some(64), + None ), ( "realtime", CultNetTransportDelivery::Unreliable, CultNetTransportOrdering::Unordered, - Some(64) + Some(64), + None ), ( "media", CultNetTransportDelivery::Reliable, CultNetTransportOrdering::Unordered, - Some(64) + Some(64), + Some(75) ), ] );