diff --git a/Cargo.lock b/Cargo.lock index 3b10ce1..bf83871 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1037,26 +1037,11 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" -[[package]] -name = "futures" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - [[package]] name = "futures-channel" -version = "0.3.32" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -1064,15 +1049,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.32" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" -version = "0.3.32" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -1098,9 +1083,9 @@ checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" [[package]] name = "futures-macro" -version = "0.3.32" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", @@ -1109,23 +1094,22 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.32" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.32" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-util" -version = "0.3.32" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ - "futures-channel", "futures-core", "futures-io", "futures-macro", @@ -1133,6 +1117,7 @@ dependencies = [ "futures-task", "memchr", "pin-project-lite", + "pin-utils", "slab", ] @@ -2221,7 +2206,6 @@ dependencies = [ "cfg-if", "chrono", "dotenv", - "futures", "hex", "hmac", "json", diff --git a/rnex-core/src/rmc/structures/any.rs b/rnex-core/src/rmc/structures/any.rs index 035d425..53e12d5 100644 --- a/rnex-core/src/rmc/structures/any.rs +++ b/rnex-core/src/rmc/structures/any.rs @@ -12,29 +12,32 @@ pub struct Any { impl RmcSerialize for Any { fn serialize(&self, writer: &mut impl Write) -> Result<()> { self.name.serialize(writer)?; - let u32_len = self.data.len() as u32 - 1; + + let u32_len = self.data.len() as u32; (u32_len + 4).serialize(writer)?; - u32_len.serialize(writer)?; - writer.write_all(&self.data)?; + self.data.serialize(writer)?; Ok(()) } fn deserialize(reader: &mut impl Read) -> Result { let name = String::deserialize(reader)?; - let size = u32::deserialize(reader)? as usize + 1; - let mut buf = vec![0; size]; - reader.read_exact(&mut buf[..])?; - let mut cursor = Cursor::new(&buf); + let data = Vec::deserialize(reader)?; + let mut cursor = Cursor::new(&data); + // also length ? let len2: u32 = cursor.read_struct(IS_BIG_ENDIAN)?; - if len2 as usize + 1 != size { - warn!("mismatched sizes on any: {} vs {}", size, len2 + 1); + if len2 as usize != data.len().overflowing_sub(4).0 { + warn!( + "mismatched sizes on any: {} vs {}", + data.len().overflowing_sub(4).0, + len2 + ); } Ok(Any { name, - data: (&buf[4..]).to_owned(), + data: (&data[4..]).to_owned(), }) } } @@ -56,10 +59,7 @@ impl Any { #[cfg(test)] mod test { - use std::io::Cursor; - use crate::rmc::structures::{ - RmcSerialize, any::Any, matchmake::{Gathering, MatchmakeSession}, }; @@ -89,13 +89,9 @@ mod test { session_key: [].into(), }; - let any = Any::new(&sess).unwrap().to_data().unwrap(); + let any = Any::new(&sess).unwrap(); - let sess2: MatchmakeSession = Any::deserialize(&mut Cursor::new(any)) - .unwrap() - .try_get() - .unwrap() - .unwrap(); + let sess2: MatchmakeSession = any.try_get().unwrap().unwrap(); assert_eq!(sess, sess2); }