respond to data packets immediately even if they are out of order
Some checks failed
Build and Test / puyopuyo (push) Has been cancelled
Build and Test / mario-tennis (push) Has been cancelled
Build and Test / splatoon (push) Has been cancelled
Build and Test / splatoon-testfire (push) Has been cancelled
Build and Test / fast-racing-neo (push) Has been cancelled
Build and Test / wii-sports-club (push) Has been cancelled
Build and Test / wii-u-chat (push) Has been cancelled
Build and Test / super-mario-maker (push) Has been cancelled
Build and Test / sonic-transformed (push) Has been cancelled
Build and Test / minecraft-wiiu (push) Has been cancelled
Build and Test / friends (push) Has been cancelled

This commit is contained in:
Maple Nebel 2026-06-26 20:10:00 +02:00
commit d2b6d78316
2 changed files with 36 additions and 8 deletions

View file

@ -558,6 +558,14 @@ impl<T: CryptoHandler> InternalSocket<T> {
let mut conn = conn.lock().await;
let mut response = packet.base_acknowledgement_packet();
response.header.types_and_flags.set_flag(HAS_SIZE | ACK);
response.header.session_id = conn.session_id;
conn.crypto_handler_instance.sign_packet(&mut response);
self.send_packet_unbuffered(address, &response).await;
conn.packet_queue.insert(packet.header.sequence_id, packet);
let mut counter = conn.reliable_client_counter;
@ -566,14 +574,6 @@ impl<T: CryptoHandler> InternalSocket<T> {
conn.crypto_handler_instance
.decrypt_incoming(packet.header.substream_id, &mut packet.payload[..]);
let mut response = packet.base_acknowledgement_packet();
response.header.types_and_flags.set_flag(HAS_SIZE | ACK);
response.header.session_id = conn.session_id;
conn.crypto_handler_instance.sign_packet(&mut response);
self.send_packet_unbuffered(address, &response).await;
conn.data_sender.send(packet.payload).await.ok();
conn.reliable_client_counter = conn.reliable_client_counter.overflowing_add(1).0;

View file

@ -232,3 +232,31 @@ mod test {
assert_eq!(KerberosDateTime::PRACTICALLY_NEVER, time)
}
}
#[test]
fn test() {
let key = *b"my password";
let nkey = hex::decode("c3ef03044c6937d30e6b179f610ea190").unwrap();
let mut key: [u8; 16] = {
let mut md5 = Md5::new();
md5.update(key);
md5.finalize().try_into().unwrap()
};
loop {
if &nkey[..] == &key[..] {
println!("success");
return;
}
let mut md5 = Md5::new();
md5.update(key);
key = md5.finalize().try_into().unwrap();
}
}
struct NexToken {
pub pid: u32,
pub time: u64,
pub pw_hash: [u8; 4],
}