Implement credential-safe programs smoke gate (#97)
Some checks failed
Native code generation / deterministic (push) Failing after 2m12s
Imaging and meshing gate / native (push) Failing after 5m40s
JPEG 2000 feature / linux (push) Successful in 2m50s
Native Rust workspace compile / compile (push) Failing after 56s
Skia feature / linux (push) Successful in 31m24s

This commit is contained in:
2026-08-11 17:04:40 +00:00
parent 66f10baa1b
commit a9e2711447
18 changed files with 2216 additions and 25 deletions

View File

@@ -1256,11 +1256,13 @@ impl AgentMovementRuntime {
packet.agent_data.agent_id = agent_id;
packet.agent_data.session_id = session_id;
packet.agent_data.circuit_code = self.network.native_circuit_code();
// The reference packet constructor marks this final region transition
// reliable; OpenSim may never publish the scene if this datagram is lost.
send_encoded(
&simulator,
PacketType::CompleteAgentMovement,
packet.to_bytes_with_method()?,
None,
Some(true),
)
}
@@ -2914,7 +2916,7 @@ mod tests {
let socket =
UdpSocket::bind(SocketAddr::new(IpAddr::V4(Ipv4Addr::LOCALHOST), 0)).unwrap();
socket
.set_read_timeout(Some(Duration::from_millis(100)))
.set_read_timeout(Some(Duration::from_secs(3)))
.unwrap();
let endpoint = socket.local_addr().unwrap();
let (packet_sender, packets) = mpsc::channel();
@@ -2934,6 +2936,9 @@ mod tests {
let mut bytes = handshake.to_bytes_with_method().unwrap();
bytes[0] &= !(crate::Helpers::MSG_RELIABLE | crate::Helpers::MSG_ZEROCODED);
socket.send_to(&bytes, client_endpoint).unwrap();
socket
.set_read_timeout(Some(Duration::from_millis(100)))
.unwrap();
loop {
match shutdown_receiver.try_recv() {
@@ -3074,7 +3079,19 @@ mod tests {
.native_connect(grid.endpoint, 0x1000, true, None, 256, 256)
.unwrap()
.unwrap();
let _ = grid.receive(PacketType::CompleteAgentMovement);
let initial_complete = grid.receive(PacketType::CompleteAgentMovement);
assert_ne!(
initial_complete[0] & crate::Helpers::MSG_RELIABLE,
0,
"the simulator transition must survive UDP startup loss"
);
manager.complete_agent_movement(simulator.clone()).unwrap();
let repeated_complete = grid.receive(PacketType::CompleteAgentMovement);
assert_ne!(
repeated_complete[0] & crate::Helpers::MSG_RELIABLE,
0,
"explicit simulator transitions must be reliable"
);
let mut complete = AgentMovementCompletePacket::new_with_constructor().unwrap();
complete.data.position = Vector3 {