From 14a801f4d411a7e7a2b4a251c9f3b771802d8e8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20Frosteg=C3=A5rd?= Date: Tue, 3 Jan 2023 18:27:56 +0100 Subject: [PATCH 1/5] ws socket worker: replace unwrap with error return --- aquatic_ws/src/workers/socket.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/aquatic_ws/src/workers/socket.rs b/aquatic_ws/src/workers/socket.rs index 5d730a1..81190c5 100644 --- a/aquatic_ws/src/workers/socket.rs +++ b/aquatic_ws/src/workers/socket.rs @@ -455,7 +455,11 @@ impl ConnectionReader { yield_if_needed().await; } - let message = self.ws_in.next().await.unwrap()?; + let message = self + .ws_in + .next() + .await + .ok_or_else(|| anyhow::anyhow!("Stream ended"))??; match InMessage::from_ws_message(message) { Ok(in_message) => { From 16effc74a358865a5337f67fa65c49ba6876ab2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20Frosteg=C3=A5rd?= Date: Tue, 3 Jan 2023 18:34:39 +0100 Subject: [PATCH 2/5] ws socket worker: replace an unwrap with expect --- aquatic_ws/src/workers/socket.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/aquatic_ws/src/workers/socket.rs b/aquatic_ws/src/workers/socket.rs index 81190c5..2e6ebb6 100644 --- a/aquatic_ws/src/workers/socket.rs +++ b/aquatic_ws/src/workers/socket.rs @@ -430,7 +430,9 @@ async fn run_stream_agnostic_connection< .unwrap() .detach(); - race(reader_handle, writer_handle).await.unwrap() + race(reader_handle, writer_handle) + .await + .expect("reader/writer task should not be closed") } struct ConnectionReader { From f18348d1d0a15c52e8b0db993b506552ee4d8d73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20Frosteg=C3=A5rd?= Date: Tue, 3 Jan 2023 18:36:14 +0100 Subject: [PATCH 3/5] Run cargo update Updating arc-swap v1.5.1 -> v1.6.0 Updating console v0.15.2 -> v0.15.4 Updating git-testament v0.2.1 -> v0.2.2 Updating git-testament-derive v0.1.13 -> v0.1.14 Updating libc v0.2.138 -> v0.2.139 Updating nom v7.1.1 -> v7.1.2 Updating once_cell v1.16.0 -> v1.17.0 Updating portable-atomic v0.3.18 -> v0.3.19 Updating serde v1.0.151 -> v1.0.152 Updating serde_derive v1.0.151 -> v1.0.152 Removing terminal_size v0.1.17 --- Cargo.lock | 53 +++++++++++++++++++++-------------------------------- 1 file changed, 21 insertions(+), 32 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a4ddcd6..7b95c36 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -366,9 +366,9 @@ dependencies = [ [[package]] name = "arc-swap" -version = "1.5.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "983cd8b9d4b02a6dc6ffa557262eb5858a27a0038ffffe21a0f133eaa819a164" +checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6" [[package]] name = "arrayref" @@ -657,16 +657,15 @@ dependencies = [ [[package]] name = "console" -version = "0.15.2" +version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c050367d967ced717c04b65d8c619d863ef9292ce0c5760028655a2fb298718c" +checksum = "c9b6515d269224923b26b5febea2ed42b2d5f2ce37284a4dd670fedd6cb8347a" dependencies = [ "encode_unicode", "lazy_static", "libc", - "terminal_size", "unicode-width", - "winapi 0.3.9", + "windows-sys", ] [[package]] @@ -1177,9 +1176,9 @@ checksum = "dec7af912d60cdbd3677c1af9352ebae6fb8394d165568a2234df0fa00f87793" [[package]] name = "git-testament" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "080c47ef3c243fb13474429c14dce386021cd64de731c353998a745c2fa2435b" +checksum = "2bddca8182c031676362c5ceb276478870044cd714da27a0637aaa143994ad74" dependencies = [ "git-testament-derive", "no-std-compat", @@ -1187,9 +1186,9 @@ dependencies = [ [[package]] name = "git-testament-derive" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0803898541a48d6f0809fa681bc8d38603f727d191f179631d85ddc3b6a9a2c" +checksum = "4a782db5866c7ab75f3552dda4cbf34e3e257cc64c963c6ed5af1e12818e8ae6" dependencies = [ "log", "proc-macro2", @@ -1555,9 +1554,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.138" +version = "0.2.139" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8" +checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" [[package]] name = "libm" @@ -1737,9 +1736,9 @@ checksum = "b93853da6d84c2e3c7d730d6473e8817692dd89be387eb01b94d7f108ecb5b8c" [[package]] name = "nom" -version = "7.1.1" +version = "7.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" +checksum = "e5507769c4919c998e69e49c839d9dc6e693ede4cc4290d6ad8b41d4f09c548c" dependencies = [ "memchr", "minimal-lexical", @@ -1861,9 +1860,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860" +checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66" [[package]] name = "oorandom" @@ -2042,9 +2041,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "0.3.18" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81bdd679d533107e090c2704a35982fc06302e30898e63ffa26a81155c012e92" +checksum = "26f6a7b87c2e435a3241addceeeff740ff8b7e76b74c13bf9acb17fa454ea00b" [[package]] name = "ppv-lite86" @@ -2336,9 +2335,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.151" +version = "1.0.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fed41fc1a24994d044e6db6935e69511a1153b52c15eb42493b26fa87feba0" +checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" dependencies = [ "serde_derive", ] @@ -2374,9 +2373,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.151" +version = "1.0.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "255abe9a125a985c05190d687b320c12f9b1f0b99445e608c21ba0782c719ad8" +checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" dependencies = [ "proc-macro2", "quote", @@ -2717,16 +2716,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20518fe4a4c9acf048008599e464deb21beeae3d3578418951a189c235a7a9a8" -[[package]] -name = "terminal_size" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "633c1a546cee861a1a6d0dc69ebeca693bf4296661ba7852b9d21d159e0506df" -dependencies = [ - "libc", - "winapi 0.3.9", -] - [[package]] name = "textwrap" version = "0.11.0" From d53d0a64e6823cdac18cf08b902d966186e816a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20Frosteg=C3=A5rd?= Date: Tue, 3 Jan 2023 18:45:02 +0100 Subject: [PATCH 4/5] Upgrade tungstenite to 0.18, async-tungstenite to 0.19 --- Cargo.lock | 21 +++++---------------- aquatic_ws/Cargo.toml | 4 ++-- aquatic_ws_load_test/Cargo.toml | 4 ++-- aquatic_ws_protocol/Cargo.toml | 2 +- 4 files changed, 10 insertions(+), 21 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7b95c36..a675935 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -395,9 +395,9 @@ dependencies = [ [[package]] name = "async-tungstenite" -version = "0.18.0" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b750efd83b7e716a015eed5ebb583cda83c52d9b24a8f0125e5c48c3313c9f8" +checksum = "8e6acf7e4a267eecbb127ed696bb2d50572c22ba7f586a646321e1798d8336a1" dependencies = [ "futures-io", "futures-util", @@ -2393,17 +2393,6 @@ dependencies = [ "serde", ] -[[package]] -name = "sha-1" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sha1" version = "0.10.5" @@ -2949,9 +2938,9 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "tungstenite" -version = "0.17.3" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e27992fd6a8c29ee7eef28fc78349aa244134e10ad447ce3b9f0ac0ed0fa4ce0" +checksum = "30ee6ab729cd4cf0fd55218530c4522ed30b7b6081752839b68fcec8d0960788" dependencies = [ "base64", "byteorder", @@ -2960,7 +2949,7 @@ dependencies = [ "httparse", "log", "rand", - "sha-1", + "sha1", "thiserror", "url", "utf-8", diff --git a/aquatic_ws/Cargo.toml b/aquatic_ws/Cargo.toml index fd127bd..1ac9d3d 100644 --- a/aquatic_ws/Cargo.toml +++ b/aquatic_ws/Cargo.toml @@ -22,7 +22,7 @@ aquatic_toml_config.workspace = true aquatic_ws_protocol.workspace = true anyhow = "1" -async-tungstenite = "0.18" +async-tungstenite = "0.19" cfg-if = "1" either = "1" futures = "0.3" @@ -41,7 +41,7 @@ serde = { version = "1", features = ["derive"] } signal-hook = { version = "0.3" } slab = "0.4" socket2 = { version = "0.4", features = ["all"] } -tungstenite = "0.17" +tungstenite = "0.18" [dev-dependencies] quickcheck = "1" diff --git a/aquatic_ws_load_test/Cargo.toml b/aquatic_ws_load_test/Cargo.toml index a6a407b..6fe7ead 100644 --- a/aquatic_ws_load_test/Cargo.toml +++ b/aquatic_ws_load_test/Cargo.toml @@ -19,7 +19,7 @@ aquatic_toml_config.workspace = true aquatic_ws_protocol.workspace = true anyhow = "1" -async-tungstenite = "0.18" +async-tungstenite = "0.19" futures = "0.3" futures-rustls = "0.22" glommio = "0.7" @@ -30,7 +30,7 @@ rand_distr = "0.4" rustls = { version = "0.20", default-features = false, features = ["dangerous_configuration"] } serde = { version = "1", features = ["derive"] } serde_json = "1" -tungstenite = "0.17" +tungstenite = "0.18" [dev-dependencies] quickcheck = "1" diff --git a/aquatic_ws_protocol/Cargo.toml b/aquatic_ws_protocol/Cargo.toml index 84ef0e6..b04f19a 100644 --- a/aquatic_ws_protocol/Cargo.toml +++ b/aquatic_ws_protocol/Cargo.toml @@ -27,7 +27,7 @@ serde_json = "1" # simd-json version 0.7 seems to have bugs in string parsing # with custom visitor, where it includes quotes in strings simd-json = { version = "0.6", features = ["allow-non-simd"] } -tungstenite = "0.17" +tungstenite = "0.18" [dev-dependencies] criterion = "0.3" From d3e0e46b41de8c90224cd697223b6e95a4a5efb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20Frosteg=C3=A5rd?= Date: Tue, 3 Jan 2023 18:45:22 +0100 Subject: [PATCH 5/5] Update TODO --- TODO.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/TODO.md b/TODO.md index 55847a7..d630ce2 100644 --- a/TODO.md +++ b/TODO.md @@ -2,10 +2,9 @@ ## High priority -* Upgrade tungstenite and async-tungstenite * Do new udp load test round * udp: support link to arbitrary homepage as well as embedded tracker URL in statistics page -* ws: wait for crates release of glommio with membarrier fix +* ws: wait for crates release of glommio with membarrier fix (PR #558) * Release new version ## Medium priority