diff --git a/Cargo.lock b/Cargo.lock index 68fdc645..c98fe08b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -23,7 +23,7 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877" dependencies = [ - "generic-array 0.14.6", + "generic-array 0.14.7", ] [[package]] @@ -44,7 +44,7 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ - "getrandom 0.2.8", + "getrandom 0.2.9", "once_cell", "version_check 0.9.4", ] @@ -56,16 +56,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" dependencies = [ "cfg-if 1.0.0", - "getrandom 0.2.8", + "getrandom 0.2.9", "once_cell", "version_check 0.9.4", ] [[package]] name = "aho-corasick" -version = "0.7.20" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +checksum = "67fc08ce920c31afb70f013dcce1bfc3a3195de6a228474e45e1f145b36f8d04" dependencies = [ "memchr", ] @@ -97,7 +97,7 @@ checksum = "1a52f81f9add01deacdc1fcb05ba09523a8faefdec6c3f69cb752b9fa9c22e5a" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -106,12 +106,12 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53eff4527d2f64c8374a3bbe1d280ce660203e8c83e4a893231037a488639a7b" dependencies = [ - "bytes 1.3.0", + "bytes 1.4.0", "env_logger 0.8.4", "lazy_static", "libc", "log", - "redox_syscall", + "redox_syscall 0.2.16", "thiserror", "time 0.2.27", "winapi 0.3.9", @@ -171,9 +171,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.68" +version = "1.0.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61" +checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4" [[package]] name = "arraydeque" @@ -183,9 +183,9 @@ checksum = "f0ffd3d69bd89910509a5d31d1f1353f38ccffdd116dd0099bbd6627f7bd8ad8" [[package]] name = "arrayref" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" [[package]] name = "arrayvec" @@ -201,7 +201,7 @@ checksum = "45403b49e3954a4b8428a0ac21a4b7afadccf92bfd96273f1a58cd4812496ae0" dependencies = [ "generic-array 0.12.4", "generic-array 0.13.3", - "generic-array 0.14.6", + "generic-array 0.14.7", "stable_deref_trait", ] @@ -212,7 +212,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3203e79f4dd9bdda415ed03cf14dae5a2bf775c683a00f94e9cd1faf0f596e5" dependencies = [ "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -228,9 +228,9 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17adb73da160dfb475c183343c8cccd80721ea5a605d3eb57125f0a7b7a92d0b" +checksum = "6fa3dc5f2a8564f07759c008b9109dc0d39de92a88d5588b8a5036d286383afb" dependencies = [ "async-lock", "async-task", @@ -257,39 +257,38 @@ dependencies = [ [[package]] name = "async-io" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c374dda1ed3e7d8f0d9ba58715f924862c63eae6849c92d3a18e7fbde9e2794" +checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" dependencies = [ "async-lock", "autocfg", + "cfg-if 1.0.0", "concurrent-queue", "futures-lite", - "libc", "log", "parking", "polling", + "rustix", "slab", - "socket2", + "socket2 0.4.9", "waker-fn", - "windows-sys 0.42.0", ] [[package]] name = "async-lock" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8101efe8695a6c17e02911402145357e718ac92d3ff88ae8419e84b1707b685" +checksum = "fa24f727524730b077666307f2734b4a1a1c57acb79193127dcc8914d5242dd7" dependencies = [ "event-listener", - "futures-lite", ] [[package]] name = "async-process" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6381ead98388605d0d9ff86371043b5aa922a3905824244de40dc263a14fcba4" +checksum = "7a9d28b1d97e08915212e2e45310d47854eafa69600756fc735fb788f75199c9" dependencies = [ "async-io", "async-lock", @@ -298,9 +297,9 @@ dependencies = [ "cfg-if 1.0.0", "event-listener", "futures-lite", - "libc", + "rustix", "signal-hook", - "windows-sys 0.42.0", + "windows-sys 0.48.0", ] [[package]] @@ -342,36 +341,37 @@ dependencies = [ "futures-io", "futures-util", "pin-utils", - "socket2", + "socket2 0.4.9", "trust-dns-resolver", ] [[package]] name = "async-stream" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dad5c83079eae9969be7fadefe640a1c566901f05ff91ab221de4b6f68d9507e" +checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" dependencies = [ "async-stream-impl", "futures-core", + "pin-project-lite 0.2.9", ] [[package]] name = "async-stream-impl" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10f203db73a71dfa2fb6dd22763990fa26f3d2625a6da2da900d23b87d26be27" +checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.15", ] [[package]] name = "async-task" -version = "4.3.0" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524" +checksum = "ecc7ab41815b3c653ccd2978ec3255c81349336702dfdf62ee6f7069b12a3aae" [[package]] name = "async-tls" @@ -381,20 +381,34 @@ checksum = "2f23d769dbf1838d5df5156e7b1ad404f4c463d1ac2c6aeb6cd943630f8a8400" dependencies = [ "futures-core", "futures-io", - "rustls", + "rustls 0.19.1", "webpki 0.21.4", "webpki-roots 0.21.1", ] [[package]] -name = "async-trait" -version = "0.1.63" +name = "async-tls" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff18d764974428cf3a9328e23fc5c986f5fbed46e6cd4cdf42544df5d297ec1" +checksum = "cfeefd0ca297cbbb3bd34fd6b228401c2a5177038257afd751bc29f0a2da4795" +dependencies = [ + "futures-core", + "futures-io", + "rustls 0.20.8", + "rustls-pemfile 1.0.2", + "webpki 0.22.0", + "webpki-roots 0.22.6", +] + +[[package]] +name = "async-trait" +version = "0.1.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.15", ] [[package]] @@ -412,16 +426,16 @@ dependencies = [ [[package]] name = "async-tungstenite" -version = "0.19.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e6acf7e4a267eecbb127ed696bb2d50572c22ba7f586a646321e1798d8336a1" +checksum = "b6d2c69d237cf761215175f390021344f5530101cca8164d69878b8a1779e80c" dependencies = [ - "async-tls", + "async-tls 0.12.0", "futures-io", "futures-util", "log", "pin-project-lite 0.2.9", - "tungstenite 0.18.0", + "tungstenite 0.19.0", ] [[package]] @@ -438,7 +452,7 @@ dependencies = [ "futures-util", "pin-project 1.0.12", "rustc_version 0.4.0", - "tokio 1.24.2", + "tokio 1.27.0", "wasm-bindgen-futures", ] @@ -464,9 +478,9 @@ dependencies = [ [[package]] name = "atomic-waker" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "debc29dde2e69f9e47506b525f639ed42300fc014a3e007832592448fa8e4599" +checksum = "1181e1e0d1fce796a03db1ae795d67167da795f9cf4a39c37589e85ef57f26d3" [[package]] name = "attohttpc" @@ -499,14 +513,14 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "axum" -version = "0.6.4" +version = "0.6.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5694b64066a2459918d8074c2ce0d5a88f409431994c2356617c8ae0c4721fc" +checksum = "113713495a32dd0ab52baf5c10044725aa3aec00b31beda84218e469029b72a3" dependencies = [ "async-trait", "axum-core", - "bitflags", - "bytes 1.3.0", + "bitflags 1.3.2", + "bytes 1.4.0", "futures-util", "http", "http-body", @@ -521,19 +535,18 @@ dependencies = [ "serde", "sync_wrapper", "tower", - "tower-http", "tower-layer", "tower-service", ] [[package]] name = "axum-core" -version = "0.3.2" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cae3e661676ffbacb30f1a824089a8c9150e71017f7e1e38f2aa32009188d34" +checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" dependencies = [ "async-trait", - "bytes 1.3.0", + "bytes 1.4.0", "futures-util", "http", "http-body", @@ -577,23 +590,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] -name = "bindgen" -version = "0.57.0" +name = "base64" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd4865004a46a0aafb2a0a5eb19d3c9fc46ee5f063a6cfc605c69ac9ecf5263d" -dependencies = [ - "bitflags", - "cexpr 0.4.0", - "clang-sys", - "lazy_static", - "lazycell", - "peeking_take_while", - "proc-macro2", - "quote", - "regex", - "rustc-hash", - "shlex 0.1.1", -] +checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" [[package]] name = "bindgen" @@ -601,8 +601,8 @@ version = "0.59.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2bd2a9a458e8f4304c52c43ebb0cfbd520289f8379a52e329a38afda99bf8eb8" dependencies = [ - "bitflags", - "cexpr 0.6.0", + "bitflags 1.3.2", + "cexpr", "clang-sys", "clap 2.34.0", "env_logger 0.9.3", @@ -614,7 +614,7 @@ dependencies = [ "quote", "regex", "rustc-hash", - "shlex 1.1.0", + "shlex", "which", ] @@ -624,6 +624,12 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "bitflags" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c70beb79cbb5ce9c4f8e20849978f34225931f665bb49efa6982875a4d5facb3" + [[package]] name = "bitvec" version = "1.0.1" @@ -658,7 +664,7 @@ checksum = "7b04ce3d2372d05d1ef4ea3fdf427da6ae3c17ca06d688a107b5344836276bc3" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -667,16 +673,16 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" dependencies = [ - "generic-array 0.14.6", + "generic-array 0.14.7", ] [[package]] name = "block-buffer" -version = "0.10.3" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ - "generic-array 0.14.6", + "generic-array 0.14.7", ] [[package]] @@ -697,9 +703,9 @@ checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" [[package]] name = "blocking" -version = "1.3.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c67b173a56acffd6d2326fb7ab938ba0b00a71480e14902b2591c87bc5741e8" +checksum = "77231a1c8f801696fc0123ec6150ce92cffb8e164a02afb9c8ddee0e9b65ad65" dependencies = [ "async-channel", "async-lock", @@ -707,23 +713,18 @@ dependencies = [ "atomic-waker", "fastrand", "futures-lite", + "log", ] [[package]] name = "boringssl-src" -version = "0.3.0+688fc5c" +version = "0.5.2+6195bf8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f901accdf830d2ea2f4e27f923a5e1125cd8b1a39ab578b9db1a42d578a6922b" +checksum = "7ab565ccc5e276ea82a2013dd08bf2c999866b06daf1d4f30fee419c4aaec6d5" dependencies = [ "cmake", ] -[[package]] -name = "boxfnonce" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5988cb1d626264ac94100be357308f29ff7cbdd3b36bda27f450a4ee3f713426" - [[package]] name = "bugsalot" version = "0.2.2" @@ -744,23 +745,24 @@ checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" [[package]] name = "bytecheck" -version = "0.6.9" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d11cac2c12b5adc6570dad2ee1b87eff4955dac476fe12d81e5fdd352e52406f" +checksum = "13fe11640a23eb24562225322cd3e452b93a3d4091d62fab69c70542fcd17d1f" dependencies = [ "bytecheck_derive", "ptr_meta", + "simdutf8", ] [[package]] name = "bytecheck_derive" -version = "0.6.9" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13e576ebe98e605500b3c8041bb888e966653577172df6dd97398714eb30b9bf" +checksum = "e31225543cb46f81a7e224762764f4a6a0f097b1db0b175f69e8065efaa42de5" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -777,15 +779,15 @@ checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" [[package]] name = "bytes" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfb24e866b15a1af2a1b663f10c6b6b8f397a84aadb828f12e5b289ec23a3a3c" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" [[package]] name = "capnp" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35400c6acb55f1a91e6843beca189aba6bccd3c11fae5a7c0288fe5a1c3da822" +checksum = "18eca1b9aca7e3623dda158213b1b79c1e5c4293fbbf0ead6b9ed28a1763bbff" [[package]] name = "capnp-futures" @@ -799,9 +801,9 @@ dependencies = [ [[package]] name = "capnp-rpc" -version = "0.16.1" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62097700b1da1dd567d77e91ddd7da0fd22c790599ce56c4eea346d60dff0acd" +checksum = "619ac0423bdd1dc0b9bb4348cc80daaf81e8e41d64210822e603d44c668534e6" dependencies = [ "capnp", "capnp-futures", @@ -810,9 +812,9 @@ dependencies = [ [[package]] name = "capnpc" -version = "0.16.1" +version = "0.16.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74147d35b0920efb5d676f49c7b4c6f643eb231a3597a1ca82af3b94cc29841c" +checksum = "1bee1608054cd103343a6ba6d02488483b8a5060cdc926d16d81c1d2e2e4ecc4" dependencies = [ "capnp", ] @@ -835,15 +837,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" -[[package]] -name = "cexpr" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4aedb84272dbe89af497cf81375129abda4fc0a9e7c5d317498c15cc30c0d27" -dependencies = [ - "nom 5.1.2", -] - [[package]] name = "cexpr" version = "0.6.0" @@ -879,12 +872,12 @@ dependencies = [ [[package]] name = "chacha20" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fc89c7c5b9e7a02dfe45cd2367bae382f9ed31c61ca8debe5f827c420a2f08" +checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" dependencies = [ "cfg-if 1.0.0", - "cipher 0.4.3", + "cipher 0.4.4", "cpufeatures", ] @@ -903,9 +896,9 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.23" +version = "0.4.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b0a3d9ed01224b22057780a37bb8c5dbfe1be8ba48678e7bf57ec4b385411f" +checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b" dependencies = [ "iana-time-zone", "js-sys", @@ -949,14 +942,14 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" dependencies = [ - "generic-array 0.14.6", + "generic-array 0.14.7", ] [[package]] name = "cipher" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1873270f8f7942c191139cb8a40fd228da6c3fd2fc376d7e92d47aa14aeb59e" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ "crypto-common", "inout", @@ -964,9 +957,9 @@ dependencies = [ [[package]] name = "clang-sys" -version = "1.4.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa2e27ae6ab525c3d369ded447057bca5438d86dc3a68f6faafb8269ba82ebf3" +checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" dependencies = [ "glob", "libc", @@ -981,7 +974,7 @@ checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" dependencies = [ "ansi_term", "atty", - "bitflags", + "bitflags 1.3.2", "strsim 0.8.0", "textwrap 0.11.0", "unicode-width", @@ -995,7 +988,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5" dependencies = [ "atty", - "bitflags", + "bitflags 1.3.2", "clap_lex", "indexmap", "strsim 0.10.0", @@ -1014,9 +1007,9 @@ dependencies = [ [[package]] name = "cmake" -version = "0.1.49" +version = "0.1.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db34956e100b30725f2eb215f90d4871051239535632f84fea3bc92722c66b7c" +checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" dependencies = [ "cc", ] @@ -1050,15 +1043,15 @@ version = "4.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" dependencies = [ - "bytes 1.3.0", + "bytes 1.4.0", "memchr", ] [[package]] name = "concurrent-queue" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c278839b831783b70278b14df4d45e1beb1aad306c07bb796637de9a0e323e8e" +checksum = "62ec6771ecfa0762d24683ee5a32ad78487a3d3afdc0fb8cae19d2c5deb50b7c" dependencies = [ "crossbeam-utils", ] @@ -1110,7 +1103,7 @@ dependencies = [ "serde", "serde_json", "thread_local", - "tokio 1.24.2", + "tokio 1.27.0", "tokio-stream", "tonic", "tracing", @@ -1130,9 +1123,9 @@ dependencies = [ [[package]] name = "console_log" -version = "0.2.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501a375961cef1a0d44767200e66e4a559283097e91d0730b1d75dfb2f8a1494" +checksum = "e89f72f65e8501878b8a004d5a1afb780987e2ce2b4532c562e367a72c57499f" dependencies = [ "log", "web-sys", @@ -1146,9 +1139,9 @@ checksum = "fbdcdcb6d86f71c5e97409ad45898af11cbc995b4ee8112d59095a28d376c935" [[package]] name = "constant_time_eq" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3ad85c1f65dc7b37604eb0e89748faf0b9653065f2a8ef69f96a687ec1e9279" +checksum = "13418e745008f7349ec7e449155f419a61b92b58a99cc3616942b926825ec76b" [[package]] name = "core-foundation" @@ -1166,7 +1159,7 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" dependencies = [ - "core-foundation-sys 0.8.3", + "core-foundation-sys 0.8.4", "libc", ] @@ -1178,15 +1171,15 @@ checksum = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b" [[package]] name = "core-foundation-sys" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" [[package]] name = "cpufeatures" -version = "0.2.5" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" +checksum = "3e4c1eaa2012c47becbbad2ab175484c2a84d1185b566fb2cc5b8707343dfe58" dependencies = [ "libc", ] @@ -1238,9 +1231,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.6" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" dependencies = [ "cfg-if 1.0.0", "crossbeam-utils", @@ -1248,9 +1241,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" dependencies = [ "cfg-if 1.0.0", "crossbeam-epoch", @@ -1259,22 +1252,22 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.13" +version = "0.9.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a" +checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695" dependencies = [ "autocfg", "cfg-if 1.0.0", "crossbeam-utils", - "memoffset 0.7.1", + "memoffset 0.8.0", "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.14" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f" +checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" dependencies = [ "cfg-if 1.0.0", ] @@ -1285,10 +1278,10 @@ version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e64e6c0fbe2c17357405f7c758c1ef960fce08bdfb2c03d88d2a18d7e09c4b67" dependencies = [ - "bitflags", + "bitflags 1.3.2", "crossterm_winapi", "libc", - "mio 0.8.5", + "mio 0.8.6", "parking_lot 0.12.1", "signal-hook", "signal-hook-mio", @@ -1316,7 +1309,7 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ - "generic-array 0.14.6", + "generic-array 0.14.7", "typenum", ] @@ -1326,7 +1319,7 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" dependencies = [ - "generic-array 0.14.6", + "generic-array 0.14.7", "subtle", ] @@ -1337,25 +1330,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" dependencies = [ "quote", - "syn", + "syn 1.0.109", ] [[package]] name = "ctrlc" -version = "3.2.4" +version = "3.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1631ca6e3c59112501a9d87fd86f21591ff77acd31331e8a73f8d80a65bbdd71" +checksum = "bbcf33c2a618cbe41ee43ae6e9f2e48368cd9f9db2896f10167d8d762679f639" dependencies = [ "nix 0.26.2", - "windows-sys 0.42.0", + "windows-sys 0.45.0", ] -[[package]] -name = "cty" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" - [[package]] name = "cursive" version = "0.20.0" @@ -1370,7 +1357,7 @@ dependencies = [ "libc", "log", "signal-hook", - "tokio 1.24.2", + "tokio 1.27.0", "unicode-segmentation", "unicode-width", ] @@ -1385,7 +1372,7 @@ dependencies = [ "flexi_logger", "lazy_static", "log", - "time 0.3.17", + "time 0.3.20", "unicode-width", ] @@ -1415,8 +1402,8 @@ dependencies = [ "log", "num", "owning_ref", - "time 0.3.17", - "tokio 1.24.2", + "time 0.3.20", + "tokio 1.27.0", "toml", "unicode-segmentation", "unicode-width", @@ -1460,9 +1447,9 @@ dependencies = [ [[package]] name = "cxx" -version = "1.0.88" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "322296e2f2e5af4270b54df9e85a02ff037e271af20ba3e7fe1575515dc840b8" +checksum = "f61f1b6389c3fe1c316bf8a4dccc90a38208354b330925bce1f74a6c4756eb93" dependencies = [ "cc", "cxxbridge-flags", @@ -1472,9 +1459,9 @@ dependencies = [ [[package]] name = "cxx-build" -version = "1.0.88" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "017a1385b05d631e7875b1f151c9f012d37b53491e2a87f65bff5c262b2111d8" +checksum = "12cee708e8962df2aeb38f594aae5d827c022b6460ac71a7a3e2c3c2aae5a07b" dependencies = [ "cc", "codespan-reporting", @@ -1482,33 +1469,32 @@ dependencies = [ "proc-macro2", "quote", "scratch", - "syn", + "syn 2.0.15", ] [[package]] name = "cxxbridge-flags" -version = "1.0.88" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c26bbb078acf09bc1ecda02d4223f03bdd28bd4874edcb0379138efc499ce971" +checksum = "7944172ae7e4068c533afbb984114a56c46e9ccddda550499caa222902c7f7bb" [[package]] name = "cxxbridge-macro" -version = "1.0.88" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357f40d1f06a24b60ae1fe122542c1fb05d28d32acb2aed064e84bc2ad1e252e" +checksum = "2345488264226bf682893e25de0769f3360aac9957980ec49361b083ddaa5bc5" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.15", ] [[package]] name = "daemonize" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70c24513e34f53b640819f0ac9f705b673fcf4006d7aab8778bee72ebfc89815" +checksum = "ab8bfdaacb3c887a54d41bdf48d3af8873b3f5566469f8ba21b92057509f116e" dependencies = [ - "boxfnonce", "libc", ] @@ -1524,12 +1510,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.14.2" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0dd3cd20dc6b5a876612a6e5accfe7f3dd883db6d07acfbf14c128f61550dfa" +checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" dependencies = [ - "darling_core 0.14.2", - "darling_macro 0.14.2", + "darling_core 0.14.4", + "darling_macro 0.14.4", ] [[package]] @@ -1543,20 +1529,20 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.10.0", - "syn", + "syn 1.0.109", ] [[package]] name = "darling_core" -version = "0.14.2" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a784d2ccaf7c98501746bf0be29b2022ba41fd62a2e622af997a03e9f972859f" +checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -1567,18 +1553,18 @@ checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" dependencies = [ "darling_core 0.13.4", "quote", - "syn", + "syn 1.0.109", ] [[package]] name = "darling_macro" -version = "0.14.2" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7618812407e9402654622dd402b0a89dff9ba93badd6540781526117b92aab7e" +checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" dependencies = [ - "darling_core 0.14.2", + "darling_core 0.14.4", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -1591,7 +1577,7 @@ dependencies = [ "hashbrown", "lock_api", "once_cell", - "parking_lot_core 0.9.6", + "parking_lot_core 0.9.7", ] [[package]] @@ -1608,7 +1594,7 @@ checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -1617,7 +1603,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ - "generic-array 0.14.6", + "generic-array 0.14.7", ] [[package]] @@ -1626,7 +1612,7 @@ version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" dependencies = [ - "block-buffer 0.10.3", + "block-buffer 0.10.4", "crypto-common", "subtle", ] @@ -1700,14 +1686,14 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] name = "enum-map" -version = "2.4.2" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50c25992259941eb7e57b936157961b217a4fc8597829ddef0596d6c3cd86e1a" +checksum = "988f0d17a0fa38291e5f41f71ea8d46a5d5497b9054d5a759fae2cbb819f2356" dependencies = [ "enum-map-derive", ] @@ -1720,7 +1706,7 @@ checksum = "2a4da76b3b6116d758c7ba93f7ec6a35d2e2cf24feda76c6e38a375f4d5c59f2" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -1741,7 +1727,7 @@ checksum = "946ee94e3dbf58fdd324f9ce245c7b238d46a66f00e86a020b71996349e46cce" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -1760,10 +1746,10 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03e7b551eba279bf0fa88b83a46330168c1560a52a94f5126f892f0b364ab3e0" dependencies = [ - "darling 0.14.2", + "darling 0.14.4", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -1800,17 +1786,24 @@ dependencies = [ ] [[package]] -name = "err-derive" +name = "errno" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c34a887c8df3ed90498c1c437ce21f211c8e27672921a8ffa293cb8d6d4caa9e" +checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" dependencies = [ - "proc-macro-error", - "proc-macro2", - "quote", - "rustversion", - "syn", - "synstructure", + "errno-dragonfly", + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", ] [[package]] @@ -1874,7 +1867,7 @@ checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", "synstructure", ] @@ -1892,9 +1885,9 @@ checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" [[package]] name = "fastrand" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" dependencies = [ "instant", ] @@ -1921,12 +1914,6 @@ dependencies = [ "static_assertions", ] -[[package]] -name = "fixedbitset" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" - [[package]] name = "flate2" version = "1.0.25" @@ -1952,7 +1939,7 @@ dependencies = [ "regex", "rustversion", "thiserror", - "time 0.3.17", + "time 0.3.20", ] [[package]] @@ -1965,7 +1952,7 @@ dependencies = [ "futures-sink", "nanorand", "pin-project 1.0.12", - "spin 0.9.4", + "spin 0.9.8", ] [[package]] @@ -1999,7 +1986,7 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" dependencies = [ - "bitflags", + "bitflags 1.3.2", "fuchsia-zircon-sys", ] @@ -2017,9 +2004,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.25" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38390104763dc37a5145a53c29c63c1290b5d316d6086ec32c293f6736051bb0" +checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" dependencies = [ "futures-channel", "futures-core", @@ -2032,9 +2019,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.25" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed" +checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" dependencies = [ "futures-core", "futures-sink", @@ -2042,15 +2029,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.25" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac" +checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" [[package]] name = "futures-executor" -version = "0.3.25" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7acc85df6714c176ab5edf386123fafe217be88c0840ec11f199441134a074e2" +checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" dependencies = [ "futures-core", "futures-task", @@ -2059,15 +2046,15 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.25" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb" +checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" [[package]] name = "futures-lite" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48" +checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" dependencies = [ "fastrand", "futures-core", @@ -2080,26 +2067,26 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.25" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d" +checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.15", ] [[package]] name = "futures-sink" -version = "0.3.25" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9" +checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" [[package]] name = "futures-task" -version = "0.3.25" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea" +checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" [[package]] name = "futures-timer" @@ -2113,9 +2100,9 @@ dependencies = [ [[package]] name = "futures-util" -version = "0.3.25" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6" +checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" dependencies = [ "futures-channel", "futures-core", @@ -2149,9 +2136,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.6" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check 0.9.4", @@ -2170,9 +2157,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" +checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -2183,9 +2170,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.27.1" +version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "221996f774192f0f718773def8201c4ae31f02616a54ccfc2d358bb0e5cefdec" +checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4" [[package]] name = "glob" @@ -2220,25 +2207,26 @@ dependencies = [ [[package]] name = "grpcio" -version = "0.9.1" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d99e00eed7e0a04ee2705112e7cfdbe1a3cc771147f22f016a8cd2d002187b" +checksum = "609832ca501baeb662dc81932fda9ed83f5d058f4b899a807ba222ce696f430a" dependencies = [ - "futures", + "futures-executor", + "futures-util", "grpcio-sys", "libc", "log", - "parking_lot 0.11.2", + "parking_lot 0.12.1", "protobuf", ] [[package]] name = "grpcio-sys" -version = "0.9.1+1.38.0" +version = "0.12.1+1.46.5-patched" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9447d1a926beeef466606cc45717f80897998b548e7dc622873d453e1ecb4be4" +checksum = "cf625d1803b6f44203f0428ddace847fb4994def5c803fc8a7a2f18fb3daec62" dependencies = [ - "bindgen 0.57.0", + "bindgen", "boringssl-src", "cc", "cmake", @@ -2250,11 +2238,11 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.15" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f9f29bc9dda355256b2916cf526ab02ce0aeaaaf2bad60d65ef3f12f11dd0f4" +checksum = "17f8a914c2987b688368b5138aa05321db91f4090cf26118185672ad588bce21" dependencies = [ - "bytes 1.3.0", + "bytes 1.4.0", "fnv", "futures-core", "futures-sink", @@ -2262,7 +2250,7 @@ dependencies = [ "http", "indexmap", "slab", - "tokio 1.24.2", + "tokio 1.27.0", "tokio-util", "tracing", ] @@ -2335,9 +2323,9 @@ dependencies = [ [[package]] name = "heck" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" @@ -2357,6 +2345,12 @@ dependencies = [ "libc", ] +[[package]] +name = "hermit-abi" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" + [[package]] name = "hex" version = "0.4.3" @@ -2396,11 +2390,11 @@ dependencies = [ [[package]] name = "http" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" dependencies = [ - "bytes 1.3.0", + "bytes 1.4.0", "fnv", "itoa", ] @@ -2411,17 +2405,11 @@ version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" dependencies = [ - "bytes 1.3.0", + "bytes 1.4.0", "http", "pin-project-lite 0.2.9", ] -[[package]] -name = "http-range-header" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29" - [[package]] name = "httparse" version = "1.8.0" @@ -2442,11 +2430,11 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.23" +version = "0.14.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "034711faac9d2166cb1baf1a2fb0b60b1f277f8492fd72176c17f3515e1abd3c" +checksum = "ab302d72a6f11a3b910431ff93aae7e773078c769f0a3ef15fb9ec692ed147d4" dependencies = [ - "bytes 1.3.0", + "bytes 1.4.0", "futures-channel", "futures-core", "futures-util", @@ -2457,8 +2445,8 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite 0.2.9", - "socket2", - "tokio 1.24.2", + "socket2 0.4.9", + "tokio 1.27.0", "tower-service", "tracing", "want", @@ -2472,22 +2460,22 @@ checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" dependencies = [ "hyper", "pin-project-lite 0.2.9", - "tokio 1.24.2", + "tokio 1.27.0", "tokio-io-timeout", ] [[package]] name = "iana-time-zone" -version = "0.1.53" +version = "0.1.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765" +checksum = "0722cd7114b7de04316e7ea5456a0bbb20e4adb46fd27a3697adb812cff0f37c" dependencies = [ "android_system_properties", - "core-foundation-sys 0.8.3", + "core-foundation-sys 0.8.4", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "winapi 0.3.9", + "windows 0.48.0", ] [[package]] @@ -2542,7 +2530,7 @@ name = "igd" version = "0.12.0" dependencies = [ "attohttpc", - "bytes 1.3.0", + "bytes 1.4.0", "futures", "http", "hyper", @@ -2551,7 +2539,7 @@ dependencies = [ "simplelog 0.9.0", "tokio 0.2.25", "tokio 0.3.7", - "tokio 1.24.2", + "tokio 1.27.0", "url", "xmltree", ] @@ -2591,7 +2579,7 @@ checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -2602,9 +2590,9 @@ checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" [[package]] name = "indexmap" -version = "1.9.2" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown", @@ -2616,7 +2604,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" dependencies = [ - "generic-array 0.14.6", + "generic-array 0.14.7", ] [[package]] @@ -2640,6 +2628,17 @@ dependencies = [ "web-sys", ] +[[package]] +name = "io-lifetimes" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220" +dependencies = [ + "hermit-abi 0.3.1", + "libc", + "windows-sys 0.48.0", +] + [[package]] name = "iovec" version = "0.1.4" @@ -2655,7 +2654,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd302af1b90f2463a98fa5ad469fc212c8e3175a41c3068601bfa2727591c5be" dependencies = [ - "socket2", + "socket2 0.4.9", "widestring 0.5.1", "winapi 0.3.9", "winreg", @@ -2663,9 +2662,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.7.1" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30e22bd8629359895450b59ea7a776c850561b96a3b1d31321c1949d9e6c9146" +checksum = "12b6ee2129af8d4fb011108c73d99a1b83a85977f23b82460c0ae2e25bb4b57f" [[package]] name = "itertools" @@ -2678,9 +2677,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440" +checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" [[package]] name = "jni" @@ -2696,6 +2695,22 @@ dependencies = [ "walkdir", ] +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if 1.0.0", + "combine", + "jni-sys", + "log", + "thiserror", + "walkdir", + "windows-sys 0.45.0", +] + [[package]] name = "jni-sys" version = "0.3.0" @@ -2704,9 +2719,9 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" [[package]] name = "js-sys" -version = "0.3.60" +version = "0.3.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" +checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" dependencies = [ "wasm-bindgen", ] @@ -2766,10 +2781,10 @@ dependencies = [ "byteorder", "cfg-if 1.0.0", "core-foundation 0.9.3", - "core-foundation-sys 0.8.3", + "core-foundation-sys 0.8.4", "directories", "fs4", - "jni", + "jni 0.20.0", "keychain-services", "lazy_static", "log", @@ -2798,7 +2813,7 @@ dependencies = [ "keyvaluedb", "keyvaluedb-shared-tests", "parking_lot 0.12.1", - "tokio 1.24.2", + "tokio 1.27.0", "wasm-bindgen-futures", "wasm-bindgen-test", ] @@ -2827,9 +2842,9 @@ dependencies = [ "parking_lot 0.12.1", "rand 0.8.5", "rusqlite", - "sysinfo 0.27.7", + "sysinfo", "tempfile", - "tokio 1.24.2", + "tokio 1.27.0", ] [[package]] @@ -2875,9 +2890,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.139" +version = "0.2.142" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" +checksum = "6a987beff54b60ffa6d51982e1aa1146bc42f19bd26be28b0586f252fccf5317" [[package]] name = "libloading" @@ -2891,9 +2906,9 @@ dependencies = [ [[package]] name = "libsqlite3-sys" -version = "0.25.2" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29f835d03d717946d28b1d1ed632eb6f0e24a299388ee623d0c23118d3e8a7fa" +checksum = "afc22eff61b133b115c6e8c74e818c628d6d5e7a502afea6f64dee076dd94326" dependencies = [ "cc", "pkg-config", @@ -2927,6 +2942,12 @@ version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" +[[package]] +name = "linux-raw-sys" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b085a4f2cde5781fc4b1717f2e86c62f5cda49de7ba99a7c2eae02b61c9064c" + [[package]] name = "lock_api" version = "0.4.9" @@ -3013,6 +3034,15 @@ dependencies = [ "autocfg", ] +[[package]] +name = "memoffset" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" +dependencies = [ + "autocfg", +] + [[package]] name = "memory_units" version = "0.4.0" @@ -3021,9 +3051,9 @@ checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" [[package]] name = "mime" -version = "0.3.16" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "minimal-lexical" @@ -3074,14 +3104,14 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de" +checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" dependencies = [ "libc", "log", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.42.0", + "windows-sys 0.45.0", ] [[package]] @@ -3116,19 +3146,13 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "multimap" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" - [[package]] name = "nanorand" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" dependencies = [ - "getrandom 0.2.8", + "getrandom 0.2.9", ] [[package]] @@ -3138,7 +3162,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1bb540dc6ef51cfe1916ec038ce7a620daf3a111e2502d745197cd53d6bca15" dependencies = [ "libc", - "socket2", + "socket2 0.4.9", ] [[package]] @@ -3147,7 +3171,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" dependencies = [ - "bitflags", + "bitflags 1.3.2", "jni-sys", "ndk-sys 0.4.1+23.1.7779620", "num_enum", @@ -3185,10 +3209,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0df7ac00c4672f9d5aece54ee3347520b7e20f158656c7db2e6de01902eb7a6c" dependencies = [ "darling 0.13.4", - "proc-macro-crate 1.3.0", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -3235,7 +3259,7 @@ name = "netlink-packet-route" version = "0.10.0" dependencies = [ "anyhow", - "bitflags", + "bitflags 1.3.2", "byteorder", "libc", "netlink-packet-core", @@ -3256,12 +3280,12 @@ dependencies = [ name = "netlink-proto" version = "0.9.1" dependencies = [ - "bytes 1.3.0", + "bytes 1.4.0", "futures", "log", "netlink-packet-core", "netlink-sys", - "tokio 1.24.2", + "tokio 1.27.0", ] [[package]] @@ -3269,11 +3293,11 @@ name = "netlink-sys" version = "0.8.1" dependencies = [ "async-io", - "bytes 1.3.0", + "bytes 1.4.0", "futures", "libc", "log", - "tokio 1.24.2", + "tokio 1.27.0", ] [[package]] @@ -3282,7 +3306,7 @@ version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4916f159ed8e5de0082076562152a76b7a1f64a01fd9d1e0fea002c37624faf" dependencies = [ - "bitflags", + "bitflags 1.3.2", "cc", "cfg-if 1.0.0", "libc", @@ -3295,7 +3319,7 @@ version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a" dependencies = [ - "bitflags", + "bitflags 1.3.2", "cfg-if 1.0.0", "libc", "memoffset 0.7.1", @@ -3313,16 +3337,6 @@ dependencies = [ "version_check 0.1.5", ] -[[package]] -name = "nom" -version = "5.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af" -dependencies = [ - "memchr", - "version_check 0.9.4", -] - [[package]] name = "nom" version = "7.1.3" @@ -3333,15 +3347,6 @@ dependencies = [ "minimal-lexical", ] -[[package]] -name = "nom8" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae01545c9c7fc4486ab7debaf2aad7003ac19431791868fb2e8066df97fad2f8" -dependencies = [ - "memchr", -] - [[package]] name = "ntapi" version = "0.3.7" @@ -3353,9 +3358,9 @@ dependencies = [ [[package]] name = "ntapi" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc51db7b362b205941f71232e56c625156eb9a929f8cf74a428fd5bc094a4afc" +checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" dependencies = [ "winapi 0.3.9", ] @@ -3458,23 +3463,23 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.5.9" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d829733185c1ca374f17e52b762f24f535ec625d2cc1f070e34c8a9068f341b" +checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.5.9" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2be1598bf1c313dcdd12092e3f1920f463462525a21b7b4e11b4168353d0123e" +checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" dependencies = [ - "proc-macro-crate 1.3.0", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -3497,9 +3502,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.17.0" +version = "1.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66" +checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" [[package]] name = "oorandom" @@ -3519,53 +3524,62 @@ version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69d6c3d7288a106c0a363e4b0e8d308058d56902adefb16f4936f417ffef086e" dependencies = [ - "opentelemetry_api", - "opentelemetry_sdk", + "opentelemetry_api 0.18.0", + "opentelemetry_sdk 0.18.0", +] + +[[package]] +name = "opentelemetry" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f4b8347cc26099d3aeee044065ecc3ae11469796b4d65d065a23a584ed92a6f" +dependencies = [ + "opentelemetry_api 0.19.0", + "opentelemetry_sdk 0.19.0", ] [[package]] name = "opentelemetry-otlp" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1c928609d087790fc936a1067bdc310ae702bdf3b090c3f281b713622c8bbde" +checksum = "8af72d59a4484654ea8eb183fea5ae4eb6a41d7ac3e3bae5f4d2a282a3a7d3ca" dependencies = [ "async-trait", "futures", "futures-util", "grpcio", "http", - "opentelemetry", + "opentelemetry 0.19.0", "opentelemetry-proto", "prost", "protobuf", "thiserror", - "tokio 1.24.2", + "tokio 1.27.0", "tonic", ] [[package]] name = "opentelemetry-proto" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d61a2f56df5574508dd86aaca016c917489e589ece4141df1b5e349af8d66c28" +checksum = "045f8eea8c0fa19f7d48e7bc3128a39c2e5c533d5c61298c548dfefc1064474c" dependencies = [ "futures", "futures-util", "grpcio", - "opentelemetry", + "opentelemetry 0.19.0", "prost", "protobuf", "tonic", - "tonic-build", ] [[package]] name = "opentelemetry-semantic-conventions" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b02e0230abb0ab6636d18e2ba8fa02903ea63772281340ccac18e0af3ec9eeb" +checksum = "24e33428e6bf08c6f7fcea4ddb8e358fab0fe48ab877a87c70c6ebe20f673ce5" dependencies = [ - "opentelemetry", + "opentelemetry 0.19.0", ] [[package]] @@ -3584,11 +3598,47 @@ dependencies = [ "thiserror", ] +[[package]] +name = "opentelemetry_api" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed41783a5bf567688eb38372f2b7a8530f5a607a4b49d38dd7573236c23ca7e2" +dependencies = [ + "fnv", + "futures-channel", + "futures-util", + "indexmap", + "once_cell", + "pin-project-lite 0.2.9", + "thiserror", + "urlencoding", +] + [[package]] name = "opentelemetry_sdk" version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ca41c4933371b61c2a2f214bf16931499af4ec90543604ec828f7a625c09113" +dependencies = [ + "async-trait", + "crossbeam-channel", + "dashmap", + "fnv", + "futures-channel", + "futures-executor", + "futures-util", + "once_cell", + "opentelemetry_api 0.18.0", + "percent-encoding", + "rand 0.8.5", + "thiserror", +] + +[[package]] +name = "opentelemetry_sdk" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b3a2a91fdbfdd4d212c0dcc2ab540de2c2bcbbd90be17de7a7daf8822d010c1" dependencies = [ "async-std", "async-trait", @@ -3599,11 +3649,11 @@ dependencies = [ "futures-executor", "futures-util", "once_cell", - "opentelemetry_api", + "opentelemetry_api 0.19.0", "percent-encoding", "rand 0.8.5", "thiserror", - "tokio 1.24.2", + "tokio 1.27.0", "tokio-stream", ] @@ -3619,9 +3669,9 @@ dependencies = [ [[package]] name = "os_str_bytes" -version = "6.4.1" +version = "6.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee" +checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267" [[package]] name = "oslog" @@ -3671,9 +3721,9 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3840933452adf7b3b9145e27086a5a3376c619dca1a21b1e5a5af0d54979bed" +checksum = "637935964ff85a605d114591d4d2c13c5d1ba2806dae97cea6bf180238a749ac" dependencies = [ "arrayvec", "bitvec", @@ -3689,17 +3739,17 @@ version = "3.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "86b26a931f824dd4eca30b3e43bb4f31cd5f0d3a403c5f5ff27106b805bfde7b" dependencies = [ - "proc-macro-crate 1.3.0", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] name = "parking" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" +checksum = "14f2252c834a40ed9bb5422029649578e63aa341ac401f74e719dd1afda8394e" [[package]] name = "parking_lot" @@ -3719,7 +3769,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core 0.9.6", + "parking_lot_core 0.9.7", ] [[package]] @@ -3731,29 +3781,29 @@ dependencies = [ "cfg-if 1.0.0", "instant", "libc", - "redox_syscall", + "redox_syscall 0.2.16", "smallvec", "winapi 0.3.9", ] [[package]] name = "parking_lot_core" -version = "0.9.6" +version = "0.9.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba1ef8814b5c993410bb3adfad7a5ed269563e4a2f90c41f5d85be7fb47133bf" +checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" dependencies = [ "cfg-if 1.0.0", "libc", - "redox_syscall", + "redox_syscall 0.2.16", "smallvec", - "windows-sys 0.42.0", + "windows-sys 0.45.0", ] [[package]] name = "paste" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d01a5bd0424d00070b0098dd17ebca6f961a959dead1dbcbbbc1d1cd8d3deeba" +checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79" [[package]] name = "pathdiff" @@ -3775,9 +3825,9 @@ checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" [[package]] name = "pest" -version = "2.5.4" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ab62d2fa33726dbe6321cc97ef96d8cde531e3eeaf858a058de53a8a6d40d8f" +checksum = "7b1403e8401ad5dedea73c626b99758535b342502f8d1e361f4a2dd952749122" dependencies = [ "thiserror", "ucd-trie", @@ -3785,9 +3835,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.5.4" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf026e2d0581559db66d837fe5242320f525d85c76283c61f4d51a1238d65ea" +checksum = "be99c4c1d2fc2769b1d00239431d711d08f6efedcecb8b6e30707160aee99c15" dependencies = [ "pest", "pest_generator", @@ -3795,38 +3845,28 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.5.4" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b27bd18aa01d91c8ed2b61ea23406a676b42d82609c6e2581fba42f0c15f17f" +checksum = "e56094789873daa36164de2e822b3888c6ae4b4f9da555a1103587658c805b1e" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn", + "syn 2.0.15", ] [[package]] name = "pest_meta" -version = "2.5.4" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f02b677c1859756359fc9983c2e56a0237f18624a3789528804406b7e915e5d" +checksum = "6733073c7cff3d8459fda0e42f13a047870242aed8b509fe98000928975f359e" dependencies = [ "once_cell", "pest", "sha2 0.10.6", ] -[[package]] -name = "petgraph" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5014253a1331579ce62aa67443b4a658c5e7dd03d4bc6d302b94474888143" -dependencies = [ - "fixedbitset", - "indexmap", -] - [[package]] name = "pharos" version = "0.5.3" @@ -3863,7 +3903,7 @@ checksum = "851c8d0ce9bebe43790dedfc86614c23494ac9f423dd618d3a61fc693eafe61e" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -3874,7 +3914,7 @@ checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -3931,16 +3971,18 @@ dependencies = [ [[package]] name = "polling" -version = "2.5.2" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22122d5ec4f9fe1b3916419b76be1e80bcb93f618d071d2edf841b137b2a2bd6" +checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" dependencies = [ "autocfg", + "bitflags 1.3.2", "cfg-if 1.0.0", + "concurrent-queue", "libc", "log", - "wepoll-ffi", - "windows-sys 0.42.0", + "pin-project-lite 0.2.9", + "windows-sys 0.48.0", ] [[package]] @@ -3960,16 +4002,6 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" -[[package]] -name = "prettyplease" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e97e3215779627f01ee256d2fad52f3d95e8e1c11e9fc6fd08f7cd455d5d5c78" -dependencies = [ - "proc-macro2", - "syn", -] - [[package]] name = "primitive-types" version = "0.12.1" @@ -3994,38 +4026,14 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "1.3.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66618389e4ec1c7afe67d51a9bf34ff9236480f8d51e7489b7d5ab0303c13f34" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ "once_cell", "toml_edit", ] -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn", - "version_check 0.9.4", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check 0.9.4", -] - [[package]] name = "proc-macro-hack" version = "0.5.20+deprecated" @@ -4034,65 +4042,42 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.50" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ef7d57beacfaf2d8aee5937dab7b7f28de3cb8b1828479bb5de2a7106f2bae2" +checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" dependencies = [ "unicode-ident", ] [[package]] name = "prost" -version = "0.11.6" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21dc42e00223fc37204bd4aa177e69420c604ca4a183209a8f9de30c6d934698" +checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" dependencies = [ - "bytes 1.3.0", + "bytes 1.4.0", "prost-derive", ] -[[package]] -name = "prost-build" -version = "0.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3f8ad728fb08fe212df3c05169e940fbb6d9d16a877ddde14644a983ba2012e" -dependencies = [ - "bytes 1.3.0", - "heck", - "itertools", - "lazy_static", - "log", - "multimap", - "petgraph", - "prettyplease", - "prost", - "prost-types", - "regex", - "syn", - "tempfile", - "which", -] - [[package]] name = "prost-derive" -version = "0.11.6" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bda8c0881ea9f722eb9629376db3d0b903b462477c1aafcb0566610ac28ac5d" +checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" dependencies = [ "anyhow", "itertools", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] name = "prost-types" -version = "0.11.6" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e0526209433e96d83d750dd81a99118edbc55739e7e61a46764fd2ad537788" +checksum = "213622a1460818959ac1181aaeb2dc9c7f63df720db7d788b3e24eacd1983e13" dependencies = [ - "bytes 1.3.0", "prost", ] @@ -4119,7 +4104,7 @@ checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -4130,9 +4115,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.23" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b" +checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" dependencies = [ "proc-macro2", ] @@ -4202,7 +4187,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.8", + "getrandom 0.2.9", ] [[package]] @@ -4216,18 +4201,15 @@ dependencies = [ [[package]] name = "raw-window-handle" -version = "0.5.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed7e3d950b66e19e0c372f3fa3fbbcf85b1746b571f74e0c2af6042a5c93420a" -dependencies = [ - "cty", -] +checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" [[package]] name = "rayon" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db3a213adf02b3bcfd2d3846bb41cb22857d131789e01df434fb7e7bc0759b7" +checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" dependencies = [ "either", "rayon-core", @@ -4235,9 +4217,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.10.2" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "356a0625f1954f730c0201cdab48611198dc6ce21f4acff55089b5a78e6e835b" +checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" dependencies = [ "crossbeam-channel", "crossbeam-deque", @@ -4251,7 +4233,16 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" dependencies = [ - "bitflags", + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags 1.3.2", ] [[package]] @@ -4260,20 +4251,20 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ - "getrandom 0.2.8", - "redox_syscall", + "getrandom 0.2.9", + "redox_syscall 0.2.16", "thiserror", ] [[package]] name = "regex" -version = "1.7.1" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" +checksum = "af83e617f331cc6ae2da5443c602dfa5af81e517212d9d611a5b3ba1777b5370" dependencies = [ "aho-corasick", "memchr", - "regex-syntax", + "regex-syntax 0.7.1", ] [[package]] @@ -4282,23 +4273,20 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" dependencies = [ - "regex-syntax", + "regex-syntax 0.6.29", ] [[package]] name = "regex-syntax" -version = "0.6.28" +version = "0.6.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] -name = "remove_dir_all" -version = "0.5.3" +name = "regex-syntax" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" -dependencies = [ - "winapi 0.3.9", -] +checksum = "a5996294f19bd3aae0453a862ad728f60e6600695733dd5df01da90c54363a3c" [[package]] name = "rend" @@ -4336,8 +4324,9 @@ dependencies = [ [[package]] name = "rkyv" -version = "0.7.39" -source = "git+https://github.com/rkyv/rkyv.git?rev=57e2a8d#57e2a8daff3e6381e170e723ed1beea5c113b232" +version = "0.7.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21499ed91807f07ae081880aabb2ccc0235e9d88011867d984525e9a4c3cfa3e" dependencies = [ "bytecheck", "hashbrown", @@ -4349,12 +4338,13 @@ dependencies = [ [[package]] name = "rkyv_derive" -version = "0.7.39" -source = "git+https://github.com/rkyv/rkyv.git?rev=57e2a8d#57e2a8daff3e6381e170e723ed1beea5c113b232" +version = "0.7.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac1c672430eb41556291981f45ca900a0239ad007242d1cb4b4167af842db666" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -4363,7 +4353,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" dependencies = [ - "bytes 1.3.0", + "bytes 1.4.0", "rustc-hex", ] @@ -4374,7 +4364,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88073939a61e5b7680558e6be56b419e208420c2adb92be54921fa6b72283f1a" dependencies = [ "base64 0.13.1", - "bitflags", + "bitflags 1.3.2", "serde", ] @@ -4401,16 +4391,16 @@ dependencies = [ "netlink-proto", "nix 0.22.3", "thiserror", - "tokio 1.24.2", + "tokio 1.27.0", ] [[package]] name = "rusqlite" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01e213bc3ecb39ac32e81e51ebe31fd888a940515173e3a18a35f8c6e896422a" +checksum = "549b9d036d571d42e6e85d1c1425e2ac83491075078ca9a15be021c56b1641f2" dependencies = [ - "bitflags", + "bitflags 2.1.0", "fallible-iterator", "fallible-streaming-iterator", "hashlink 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4434,7 +4424,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a66b1273014079e4cf2b04aad1f3a2849e26e9a106f0411be2b1c15c23a791a" dependencies = [ "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -4449,9 +4439,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.21" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" [[package]] name = "rustc-hash" @@ -4480,7 +4470,21 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.16", + "semver 1.0.17", +] + +[[package]] +name = "rustix" +version = "0.37.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f79bef90eb6d984c72722595b5b1348ab39275a5e5123faca6863bf07d75a4e0" +dependencies = [ + "bitflags 1.3.2", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys", + "windows-sys 0.48.0", ] [[package]] @@ -4492,10 +4496,22 @@ dependencies = [ "base64 0.13.1", "log", "ring", - "sct", + "sct 0.6.1", "webpki 0.21.4", ] +[[package]] +name = "rustls" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f" +dependencies = [ + "log", + "ring", + "sct 0.7.0", + "webpki 0.22.0", +] + [[package]] name = "rustls-pemfile" version = "0.2.1" @@ -4506,16 +4522,35 @@ dependencies = [ ] [[package]] -name = "rustversion" -version = "1.0.11" +name = "rustls-pemfile" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5583e89e108996506031660fe09baa5011b9dd0341b89029313006d1fb508d70" +checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b" +dependencies = [ + "base64 0.21.0", +] + +[[package]] +name = "rustls-webpki" +version = "0.100.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6207cd5ed3d8dca7816f8f3725513a34609c0c765bf652b8c3cb4cfd87db46b" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" [[package]] name = "ryu" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde" +checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" [[package]] name = "same-file" @@ -4540,9 +4575,9 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "scratch" -version = "1.0.3" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddccb15bcce173023b3fedd9436f882a0739b8dfb45e4f6b6002bee5929f61b2" +checksum = "1792db035ce95be60c3f8853017b3999209281c24e2ba5bc8e59bf97a0c590c1" [[package]] name = "sct" @@ -4554,6 +4589,16 @@ dependencies = [ "untrusted", ] +[[package]] +name = "sct" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +dependencies = [ + "ring", + "untrusted", +] + [[package]] name = "seahash" version = "4.1.0" @@ -4595,9 +4640,9 @@ version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a332be01508d814fed64bf28f798a146d73792121129962fdf335bb3c49a4254" dependencies = [ - "bitflags", + "bitflags 1.3.2", "core-foundation 0.9.3", - "core-foundation-sys 0.8.3", + "core-foundation-sys 0.8.4", "libc", "security-framework-sys", ] @@ -4608,7 +4653,7 @@ version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "31c9bb296072e961fcbd8853511dd39c2d8be2deb1e17c6860b1d30732b323b4" dependencies = [ - "core-foundation-sys 0.8.3", + "core-foundation-sys 0.8.4", "libc", ] @@ -4623,9 +4668,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58bc9567378fc7690d6b2addae4e60ac2eeea07becb2c64b9f218b53865cba2a" +checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" [[package]] name = "semver-parser" @@ -4639,12 +4684,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" -[[package]] -name = "send_wrapper" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "930c0acf610d3fdb5e2ab6213019aaa04e227ebe9547b0649ba599b16d788bd7" - [[package]] name = "send_wrapper" version = "0.6.0" @@ -4656,18 +4695,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.152" +version = "1.0.160" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" +checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c" dependencies = [ "serde_derive", ] [[package]] name = "serde-big-array" -version = "0.4.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3323f09a748af288c3dc2474ea6803ee81f118321775bffa3ac8f7e65c5e90e7" +checksum = "11fc7cc2c76d73e0f27ee52abbd64eec84d46f370c88371120433196934e4b7f" dependencies = [ "serde", ] @@ -4684,20 +4723,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.152" +version = "1.0.160" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" +checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.15", ] [[package]] name = "serde_json" -version = "1.0.91" +version = "1.0.96" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877c235533714907a8c2464236f5c4b2a17262ef1bd71f38f35ea592c8da6883" +checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" dependencies = [ "itoa", "ryu", @@ -4706,20 +4745,20 @@ dependencies = [ [[package]] name = "serde_repr" -version = "0.1.10" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a5ec9fa74a20ebbe5d9ac23dac1fc96ba0ecfe9f50f2843b52e537b10fbcb4e" +checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.15", ] [[package]] name = "serde_yaml" -version = "0.9.17" +version = "0.9.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fb06d4b6cdaef0e0c51fa881acb721bed3c924cfaa71d9c94a3b771dfdf6567" +checksum = "d9d684e3ec7de3bf5466b32bd75303ac16f0736426e5a4e0d6e489559ce1249c" dependencies = [ "indexmap", "itoa", @@ -4750,7 +4789,7 @@ checksum = "b64f9e531ce97c88b4778aad0ceee079216071cffec6ac9b904277f8f92e7fe3" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -4825,12 +4864,6 @@ dependencies = [ "lazy_static", ] -[[package]] -name = "shlex" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2" - [[package]] name = "shlex" version = "1.1.0" @@ -4839,9 +4872,9 @@ checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" [[package]] name = "signal-hook" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a253b5e89e2698464fc26b545c9edceb338e18a89effeeecfea192c3025be29d" +checksum = "732768f1176d21d09e076c23a93123d40bba92d50c4058da34d45c8de8e682b9" dependencies = [ "libc", "signal-hook-registry", @@ -4866,15 +4899,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af" dependencies = [ "libc", - "mio 0.8.5", + "mio 0.8.6", "signal-hook", ] [[package]] name = "signal-hook-registry" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" dependencies = [ "libc", ] @@ -4885,6 +4918,12 @@ version = "1.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" +[[package]] +name = "simdutf8" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" + [[package]] name = "simplelog" version = "0.9.0" @@ -4898,20 +4937,20 @@ dependencies = [ [[package]] name = "simplelog" -version = "0.12.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48dfff04aade74dd495b007c831cd6f4e0cee19c344dd9dc0884c0289b70a786" +checksum = "acee08041c5de3d5048c8b3f6f13fafb3026b24ba43c6a695a0c76179b844369" dependencies = [ "log", "termcolor", - "time 0.3.17", + "time 0.3.20", ] [[package]] name = "slab" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" dependencies = [ "autocfg", ] @@ -4934,14 +4973,24 @@ dependencies = [ [[package]] name = "socket2" -version = "0.4.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd" +checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" dependencies = [ "libc", "winapi 0.3.9", ] +[[package]] +name = "socket2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d283f86695ae989d1e18440a943880967156325ba025f05049946bff47bcc2b" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + [[package]] name = "spin" version = "0.5.2" @@ -4950,9 +4999,9 @@ checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] name = "spin" -version = "0.9.4" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f6002a767bff9e83f8eeecf883ecb8011875a21ae8da43bffb817a57e78cc09" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" dependencies = [ "lock_api", ] @@ -5002,7 +5051,7 @@ dependencies = [ "quote", "serde", "serde_derive", - "syn", + "syn 1.0.109", ] [[package]] @@ -5018,7 +5067,7 @@ dependencies = [ "serde_derive", "serde_json", "sha1 0.6.1", - "syn", + "syn 1.0.109", ] [[package]] @@ -5065,9 +5114,20 @@ checksum = "734676eb262c623cec13c3155096e08d1f8f29adce39ba17948b18dad1e54142" [[package]] name = "syn" -version = "1.0.107" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822" dependencies = [ "proc-macro2", "quote", @@ -5076,9 +5136,9 @@ dependencies = [ [[package]] name = "sync_wrapper" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20518fe4a4c9acf048008599e464deb21beeae3d3578418951a189c235a7a9a8" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] name = "synstructure" @@ -5088,25 +5148,10 @@ checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", "unicode-xid", ] -[[package]] -name = "sysinfo" -version = "0.27.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "975fe381e0ecba475d4acff52466906d95b153a40324956552e027b2a9eaa89e" -dependencies = [ - "cfg-if 1.0.0", - "core-foundation-sys 0.8.3", - "libc", - "ntapi 0.4.0", - "once_cell", - "rayon", - "winapi 0.3.9", -] - [[package]] name = "sysinfo" version = "0.28.4" @@ -5114,10 +5159,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c2f3ca6693feb29a89724516f016488e9aafc7f37264f898593ee4b942f31b" dependencies = [ "cfg-if 1.0.0", - "core-foundation-sys 0.8.3", + "core-foundation-sys 0.8.4", "libc", - "ntapi 0.4.0", + "ntapi 0.4.1", "once_cell", + "rayon", "winapi 0.3.9", ] @@ -5129,16 +5175,15 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.3.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" +checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998" dependencies = [ "cfg-if 1.0.0", "fastrand", - "libc", - "redox_syscall", - "remove_dir_all", - "winapi 0.3.9", + "redox_syscall 0.3.5", + "rustix", + "windows-sys 0.45.0", ] [[package]] @@ -5167,30 +5212,31 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" [[package]] name = "thiserror" -version = "1.0.38" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0" +checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.38" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f" +checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.15", ] [[package]] name = "thread_local" -version = "1.1.4" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" +checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" dependencies = [ + "cfg-if 1.0.0", "once_cell", ] @@ -5222,16 +5268,16 @@ dependencies = [ [[package]] name = "time" -version = "0.3.17" +version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376" +checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890" dependencies = [ "itoa", "libc", "num_threads", "serde", "time-core", - "time-macros 0.2.6", + "time-macros 0.2.8", ] [[package]] @@ -5252,9 +5298,9 @@ dependencies = [ [[package]] name = "time-macros" -version = "0.2.6" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2" +checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36" dependencies = [ "time-core", ] @@ -5269,7 +5315,7 @@ dependencies = [ "proc-macro2", "quote", "standback", - "syn", + "syn 1.0.109", ] [[package]] @@ -5302,9 +5348,9 @@ dependencies = [ [[package]] name = "tinyvec_macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" @@ -5336,23 +5382,22 @@ dependencies = [ [[package]] name = "tokio" -version = "1.24.2" +version = "1.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a12a59981d9e3c38d216785b0c37399f6e415e8d0712047620f189371b0bb" +checksum = "d0de47a4eecbe11f498978a9b29d792f0d2692d1dd003650c24c76510e3bc001" dependencies = [ "autocfg", - "bytes 1.3.0", + "bytes 1.4.0", "libc", - "memchr", - "mio 0.8.5", + "mio 0.8.6", "num_cpus", "parking_lot 0.12.1", "pin-project-lite 0.2.9", "signal-hook-registry", - "socket2", + "socket2 0.4.9", "tokio-macros", "tracing", - "windows-sys 0.42.0", + "windows-sys 0.45.0", ] [[package]] @@ -5362,43 +5407,43 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" dependencies = [ "pin-project-lite 0.2.9", - "tokio 1.24.2", + "tokio 1.27.0", ] [[package]] name = "tokio-macros" -version = "1.8.2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8" +checksum = "61a573bdc87985e9d6ddeed1b3d864e8a302c847e40d647746df2f1de209d1ce" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.15", ] [[package]] name = "tokio-stream" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d660770404473ccd7bc9f8b28494a811bc18542b915c0855c51e8f419d5223ce" +checksum = "8fb52b74f05dbf495a8fba459fdc331812b96aa086d9eb78101fa0d4569c3313" dependencies = [ "futures-core", "pin-project-lite 0.2.9", - "tokio 1.24.2", + "tokio 1.27.0", ] [[package]] name = "tokio-util" -version = "0.7.4" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740" +checksum = "5427d89453009325de0d8f342c9490009f76e999cb7672d77e46267448f7e6b2" dependencies = [ - "bytes 1.3.0", + "bytes 1.4.0", "futures-core", "futures-io", "futures-sink", "pin-project-lite 0.2.9", - "tokio 1.24.2", + "tokio 1.27.0", "tracing", ] @@ -5413,19 +5458,19 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4553f467ac8e3d374bc9a177a26801e5d0f9b211aa1673fb137a403afd1c9cf5" +checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622" [[package]] name = "toml_edit" -version = "0.18.1" +version = "0.19.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56c59d8dd7d0dcbc6428bf7aa2f0e823e26e43b3c9aca15bbc9475d23e5fa12b" +checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13" dependencies = [ "indexmap", - "nom8", "toml_datetime", + "winnow", ] [[package]] @@ -5438,7 +5483,7 @@ dependencies = [ "async-trait", "axum", "base64 0.13.1", - "bytes 1.3.0", + "bytes 1.4.0", "futures-core", "futures-util", "h2", @@ -5450,7 +5495,7 @@ dependencies = [ "pin-project 1.0.12", "prost", "prost-derive", - "tokio 1.24.2", + "tokio 1.27.0", "tokio-stream", "tokio-util", "tower", @@ -5460,19 +5505,6 @@ dependencies = [ "tracing-futures", ] -[[package]] -name = "tonic-build" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf5e9b9c0f7e0a7c027dcfaba7b2c60816c7049171f679d99ee2ff65d0de8c4" -dependencies = [ - "prettyplease", - "proc-macro2", - "prost-build", - "quote", - "syn", -] - [[package]] name = "tower" version = "0.4.13" @@ -5486,32 +5518,13 @@ dependencies = [ "pin-project-lite 0.2.9", "rand 0.8.5", "slab", - "tokio 1.24.2", + "tokio 1.27.0", "tokio-util", "tower-layer", "tower-service", "tracing", ] -[[package]] -name = "tower-http" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f873044bf02dd1e8239e9c1293ea39dad76dc594ec16185d0a1bf31d8dc8d858" -dependencies = [ - "bitflags", - "bytes 1.3.0", - "futures-core", - "futures-util", - "http", - "http-body", - "http-range-header", - "pin-project-lite 0.2.9", - "tower", - "tower-layer", - "tower-service", -] - [[package]] name = "tower-layer" version = "0.3.2" @@ -5544,7 +5557,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09d48f71a791638519505cefafe162606f706c25592e4bde4d97600c0195312e" dependencies = [ "crossbeam-channel", - "time 0.3.17", + "time 0.3.20", "tracing-subscriber", ] @@ -5556,7 +5569,7 @@ checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -5618,7 +5631,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21ebb87a95ea13271332df069020513ab70bdb5637ca42d6e492dc3bbbad48de" dependencies = [ "once_cell", - "opentelemetry", + "opentelemetry 0.18.0", "tracing", "tracing-core", "tracing-log", @@ -5631,7 +5644,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9bc58223383423483e4bc056c7e7b3f77bdee924a9d33834112c69ead06dc847" dependencies = [ - "bindgen 0.59.2", + "bindgen", "cc", "cfg-if 1.0.0", "fnv", @@ -5690,7 +5703,7 @@ dependencies = [ "smallvec", "thiserror", "tinyvec", - "tokio 1.24.2", + "tokio 1.27.0", "tracing", "url", ] @@ -5710,7 +5723,7 @@ dependencies = [ "resolv-conf", "smallvec", "thiserror", - "tokio 1.24.2", + "tokio 1.27.0", "tracing", "trust-dns-proto", ] @@ -5742,13 +5755,13 @@ dependencies = [ [[package]] name = "tungstenite" -version = "0.18.0" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30ee6ab729cd4cf0fd55218530c4522ed30b7b6081752839b68fcec8d0960788" +checksum = "15fba1a6d6bb030745759a9a2a588bfe8490fc8b4751a277db3a0be1c9ebbf67" dependencies = [ - "base64 0.13.1", "byteorder", - "bytes 1.3.0", + "bytes 1.4.0", + "data-encoding", "http", "httparse", "log", @@ -5785,15 +5798,15 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.10" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54675592c1dbefd78cbd98db9bacd89886e1ca50692a0692baefffdeb92dd58" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.6" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc" +checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" [[package]] name = "unicode-normalization" @@ -5806,9 +5819,9 @@ dependencies = [ [[package]] name = "unicode-segmentation" -version = "1.10.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fdbf052a0783de01e944a6ce7a8cb939e295b1e7be835a1112c3b9a7f047a5a" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" [[package]] name = "unicode-width" @@ -5834,15 +5847,15 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05" dependencies = [ - "generic-array 0.14.6", + "generic-array 0.14.7", "subtle", ] [[package]] name = "unsafe-libyaml" -version = "0.2.5" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc7ed8ba44ca06be78ea1ad2c3682a43349126c8818054231ee6f4748012aed2" +checksum = "1865806a559042e51ab5414598446a5871b561d21b6764f2eabb0dd481d880a6" [[package]] name = "untrusted" @@ -5861,6 +5874,12 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "urlencoding" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8db7427f936968176eaa7cdf81b7f98b980b18495ec28f1b5791ac3bfe3eea9" + [[package]] name = "utf-8" version = "0.7.6" @@ -5924,7 +5943,7 @@ dependencies = [ "serde_derive", "serial_test", "thiserror", - "tokio 1.24.2", + "tokio 1.27.0", "tokio-util", "veilid-core", ] @@ -5937,17 +5956,16 @@ dependencies = [ "async-lock", "async-std", "async-std-resolver", - "async-tls", - "async-tungstenite 0.19.0", + "async-tls 0.11.0", + "async-tungstenite 0.21.0", "async_executors", "backtrace", "blake3", "bugsalot", - "bytecheck", "capnp", "capnpc", "cfg-if 1.0.0", - "chacha20 0.9.0", + "chacha20 0.9.1", "chacha20poly1305", "chrono", "config", @@ -5961,13 +5979,13 @@ dependencies = [ "eyre", "flume", "futures-util", - "generic-array 0.14.6", - "getrandom 0.2.8", + "generic-array 0.14.7", + "getrandom 0.2.9", "hashlink 0.8.1", "hex", "ifstructs", "igd", - "jni", + "jni 0.21.1", "jni-sys", "js-sys", "json", @@ -5990,20 +6008,20 @@ dependencies = [ "rkyv", "rtnetlink", "rusqlite", - "rustls", - "rustls-pemfile", + "rustls 0.19.1", + "rustls-pemfile 0.2.1", "secrecy", "send_wrapper 0.6.0", "serde", "serde-big-array", "serde_json", "serial_test", - "simplelog 0.12.0", - "socket2", + "simplelog 0.12.1", + "socket2 0.5.2", "static_assertions", "stop-token", "thiserror", - "tokio 1.24.2", + "tokio 1.27.0", "tokio-stream", "tokio-util", "tracing", @@ -6020,10 +6038,10 @@ dependencies = [ "weak-table", "web-sys", "webpki 0.22.0", - "webpki-roots 0.22.6", + "webpki-roots 0.23.0", "wee_alloc", "winapi 0.3.9", - "windows", + "windows 0.38.0", "windows-permissions", "ws_stream_wasm", "x25519-dalek-ng", @@ -6041,15 +6059,15 @@ dependencies = [ "ffi-support", "futures-util", "hostname", - "jni", + "jni 0.21.1", "lazy_static", - "opentelemetry", + "opentelemetry 0.19.0", "opentelemetry-otlp", "opentelemetry-semantic-conventions", "parking_lot 0.12.1", "serde", "serde_json", - "tokio 1.24.2", + "tokio 1.27.0", "tokio-stream", "tokio-util", "tracing", @@ -6064,7 +6082,7 @@ version = "0.1.0" dependencies = [ "ansi_term", "async-std", - "async-tungstenite 0.19.0", + "async-tungstenite 0.21.0", "backtrace", "bugsalot", "capnp", @@ -6084,7 +6102,7 @@ dependencies = [ "json", "lazy_static", "nix 0.26.2", - "opentelemetry", + "opentelemetry 0.19.0", "opentelemetry-otlp", "opentelemetry-semantic-conventions", "parking_lot 0.12.1", @@ -6096,8 +6114,8 @@ dependencies = [ "signal-hook", "signal-hook-async-std", "stop-token", - "sysinfo 0.28.4", - "tokio 1.24.2", + "sysinfo", + "tokio 1.27.0", "tokio-stream", "tokio-util", "tracing", @@ -6123,7 +6141,7 @@ dependencies = [ "console_error_panic_hook", "eyre", "futures-util", - "jni", + "jni 0.21.1", "jni-sys", "js-sys", "lazy_static", @@ -6142,11 +6160,11 @@ dependencies = [ "rust-fsm", "send_wrapper 0.6.0", "serial_test", - "simplelog 0.12.0", + "simplelog 0.12.1", "static_assertions", "stop-token", "thiserror", - "tokio 1.24.2", + "tokio 1.27.0", "tokio-util", "tracing", "tracing-oslog", @@ -6203,12 +6221,11 @@ checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" [[package]] name = "walkdir" -version = "2.3.2" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" dependencies = [ "same-file", - "winapi 0.3.9", "winapi-util", ] @@ -6242,9 +6259,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" +checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" dependencies = [ "cfg-if 1.0.0", "serde", @@ -6254,24 +6271,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" +checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn", + "syn 1.0.109", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.33" +version = "0.4.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" +checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -6281,9 +6298,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" +checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6291,28 +6308,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" +checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" +checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" [[package]] name = "wasm-bindgen-test" -version = "0.3.33" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09d2fff962180c3fadf677438054b1db62bee4aa32af26a45388af07d1287e1d" +checksum = "6db36fc0f9fb209e88fb3642590ae0205bb5a56216dabd963ba15879fe53a30b" dependencies = [ "console_error_panic_hook", "js-sys", @@ -6324,9 +6341,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-test-macro" -version = "0.3.33" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4683da3dfc016f704c9f82cf401520c4f1cb3ee440f7f52b3d6ac29506a49ca7" +checksum = "0734759ae6b3b1717d661fe4f016efcfb9828f5edb4520c18eaee05af3b43be9" dependencies = [ "proc-macro2", "quote", @@ -6351,9 +6368,9 @@ checksum = "323f4da9523e9a669e1eaf9c6e763892769b1d38c623913647bfdc1532fe4549" [[package]] name = "web-sys" -version = "0.3.60" +version = "0.3.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" +checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" dependencies = [ "js-sys", "wasm-bindgen", @@ -6397,6 +6414,15 @@ dependencies = [ "webpki 0.22.0", ] +[[package]] +name = "webpki-roots" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa54963694b65584e170cf5dc46aeb4dcaa5584e652ff5f3952e56d66aff0125" +dependencies = [ + "rustls-webpki", +] + [[package]] name = "wee_alloc" version = "0.4.5" @@ -6409,15 +6435,6 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "wepoll-ffi" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d743fdedc5c64377b5fc2bc036b01c7fd642205a0d96356034ae3404d49eb7fb" -dependencies = [ - "cc", -] - [[package]] name = "which" version = "4.4.0" @@ -6503,67 +6520,95 @@ dependencies = [ "windows_x86_64_msvc 0.38.0", ] +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets 0.48.0", +] + [[package]] name = "windows-permissions" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e2ccdc3c6bf4d4a094e031b63fadd08d8e42abd259940eb8aa5fdc09d4bf9be" dependencies = [ - "bitflags", + "bitflags 1.3.2", "winapi 0.3.9", ] [[package]] name = "windows-service" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "917fdb865e7ff03af9dd86609f8767bc88fefba89e8efd569de8e208af8724b3" +checksum = "cd9db37ecb5b13762d95468a2fc6009d4b2c62801243223aabd44fca13ad13c8" dependencies = [ - "bitflags", - "err-derive", + "bitflags 1.3.2", "widestring 1.0.2", - "windows-sys 0.36.1", + "windows-sys 0.45.0", ] [[package]] name = "windows-sys" -version = "0.36.1" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" dependencies = [ - "windows_aarch64_msvc 0.36.1", - "windows_i686_gnu 0.36.1", - "windows_i686_msvc 0.36.1", - "windows_x86_64_gnu 0.36.1", - "windows_x86_64_msvc 0.36.1", + "windows-targets 0.42.2", ] [[package]] name = "windows-sys" -version = "0.42.0" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc 0.42.1", - "windows_i686_gnu 0.42.1", - "windows_i686_msvc 0.42.1", - "windows_x86_64_gnu 0.42.1", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc 0.42.1", + "windows-targets 0.48.0", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +dependencies = [ + "windows_aarch64_gnullvm 0.48.0", + "windows_aarch64_msvc 0.48.0", + "windows_i686_gnu 0.48.0", + "windows_i686_msvc 0.48.0", + "windows_x86_64_gnu 0.48.0", + "windows_x86_64_gnullvm 0.48.0", + "windows_x86_64_msvc 0.48.0", ] [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" [[package]] -name = "windows_aarch64_msvc" -version = "0.36.1" +name = "windows_aarch64_gnullvm" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" [[package]] name = "windows_aarch64_msvc" @@ -6573,15 +6618,15 @@ checksum = "b12add87e2fb192fff3f4f7e4342b3694785d79f3a64e2c20d5ceb5ccbcfc3cd" [[package]] name = "windows_aarch64_msvc" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" [[package]] -name = "windows_i686_gnu" -version = "0.36.1" +name = "windows_aarch64_msvc" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" [[package]] name = "windows_i686_gnu" @@ -6591,15 +6636,15 @@ checksum = "4c98f2db372c23965c5e0f43896a8f0316dc0fbe48d1aa65bea9bdd295d43c15" [[package]] name = "windows_i686_gnu" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] -name = "windows_i686_msvc" -version = "0.36.1" +name = "windows_i686_gnu" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" [[package]] name = "windows_i686_msvc" @@ -6609,15 +6654,15 @@ checksum = "cdf0569be0f2863ab6a12a6ba841fcfa7d107cbc7545a3ebd57685330db0a3ff" [[package]] name = "windows_i686_msvc" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] -name = "windows_x86_64_gnu" -version = "0.36.1" +name = "windows_i686_msvc" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" [[package]] name = "windows_x86_64_gnu" @@ -6627,21 +6672,27 @@ checksum = "905858262c8380a36f32cb8c1990d7e7c3b7a8170e58ed9a98ca6d940b7ea9f1" [[package]] name = "windows_x86_64_gnu" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" [[package]] -name = "windows_x86_64_msvc" -version = "0.36.1" +name = "windows_x86_64_gnullvm" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" [[package]] name = "windows_x86_64_msvc" @@ -6651,9 +6702,24 @@ checksum = "890c3c6341d441ffb38f705f47196e3665dc6dd79f6d72fa185d937326730561" [[package]] name = "windows_x86_64_msvc" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" + +[[package]] +name = "winnow" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae8970b36c66498d8ff1d66685dc86b91b29db0c7739899012f63a63814b4b28" +dependencies = [ + "memchr", +] [[package]] name = "winreg" @@ -6676,16 +6742,17 @@ dependencies = [ [[package]] name = "ws_stream_wasm" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47ca1ab42f5afed7fc332b22b6e932ca5414b209465412c8cdf0ad23bc0de645" +checksum = "7999f5f4217fe3818726b66257a4475f71e74ffd190776ad053fa159e50737f5" dependencies = [ "async_io_stream", "futures", "js-sys", + "log", "pharos", "rustc_version 0.4.0", - "send_wrapper 0.5.0", + "send_wrapper 0.6.0", "thiserror", "wasm-bindgen", "wasm-bindgen-futures", @@ -6775,7 +6842,7 @@ dependencies = [ "proc-macro-crate 0.1.5", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -6789,14 +6856,13 @@ dependencies = [ [[package]] name = "zeroize_derive" -version = "1.3.3" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44bf07cb3e50ea2003396695d58bf46bc9887a1f362260446fad6bc4e79bd36c" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn", - "synstructure", + "syn 2.0.15", ] [[package]] @@ -6819,8 +6885,8 @@ version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4ca5e22593eb4212382d60d26350065bf2a02c34b85bc850474a74b589a3de9" dependencies = [ - "proc-macro-crate 1.3.0", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] diff --git a/veilid-core/Cargo.toml b/veilid-core/Cargo.toml index d9c064d8..60c077f4 100644 --- a/veilid-core/Cargo.toml +++ b/veilid-core/Cargo.toml @@ -65,9 +65,7 @@ rtnetlink = { version = "^0", default-features = false, optional = true } async-std-resolver = { version = "^0", optional = true } trust-dns-resolver = { version = "^0", optional = true } keyvaluedb = { path = "../external/keyvaluedb/keyvaluedb" } -#rkyv = { version = "^0", default_features = false, features = ["std", "alloc", "strict", "size_32", "validation"] } -rkyv = { git = "https://github.com/rkyv/rkyv.git", rev = "57e2a8d", default_features = false, features = ["std", "alloc", "strict", "size_32", "validation"] } -bytecheck = "^0" +rkyv = { version = "^0", default_features = false, features = ["std", "alloc", "strict", "size_32", "validation"] } data-encoding = { version = "^2" } weak-table = "0.3.2" @@ -91,7 +89,7 @@ rustls = "^0.19" rustls-pemfile = "^0.2" futures-util = { version = "^0", default-features = false, features = ["async-await", "sink", "std", "io"] } keyvaluedb-sqlite = { path = "../external/keyvaluedb/keyvaluedb-sqlite" } -socket2 = "^0" +socket2 = { version = "^0", features = ["all"] } bugsalot = "^0" chrono = "^0" libc = "^0" diff --git a/veilid-core/src/intf/native/protected_store.rs b/veilid-core/src/intf/native/protected_store.rs index 022a3477..9bc08620 100644 --- a/veilid-core/src/intf/native/protected_store.rs +++ b/veilid-core/src/intf/native/protected_store.rs @@ -1,7 +1,7 @@ use crate::*; use data_encoding::BASE64URL_NOPAD; use keyring_manager::*; -use rkyv::{Archive as RkyvArchive, Deserialize as RkyvDeserialize, Serialize as RkyvSerialize}; +use rkyv::{bytecheck::CheckBytes, Archive as RkyvArchive, Deserialize as RkyvDeserialize, Serialize as RkyvSerialize}; use std::path::Path; pub struct ProtectedStoreInner { @@ -175,7 +175,7 @@ impl ProtectedStore { K: AsRef + fmt::Debug, T: RkyvArchive, ::Archived: - for<'t> bytecheck::CheckBytes>, + for<'t> CheckBytes>, ::Archived: RkyvDeserialize, { diff --git a/veilid-core/src/intf/table_db.rs b/veilid-core/src/intf/table_db.rs index 6c93dcbf..194a19fe 100644 --- a/veilid-core/src/intf/table_db.rs +++ b/veilid-core/src/intf/table_db.rs @@ -1,5 +1,8 @@ use crate::*; -use rkyv::{Archive as RkyvArchive, Deserialize as RkyvDeserialize, Serialize as RkyvSerialize}; +use rkyv::{ + bytecheck::CheckBytes, Archive as RkyvArchive, Deserialize as RkyvDeserialize, + Serialize as RkyvSerialize, +}; cfg_if! { if #[cfg(target_arch = "wasm32")] { @@ -127,7 +130,7 @@ impl TableDB { where T: RkyvArchive, ::Archived: - for<'t> bytecheck::CheckBytes>, + for<'t> CheckBytes>, ::Archived: RkyvDeserialize, { diff --git a/veilid-core/src/intf/wasm/protected_store.rs b/veilid-core/src/intf/wasm/protected_store.rs index 23288fbc..842de5ab 100644 --- a/veilid-core/src/intf/wasm/protected_store.rs +++ b/veilid-core/src/intf/wasm/protected_store.rs @@ -1,6 +1,9 @@ use crate::*; use data_encoding::BASE64URL_NOPAD; -use rkyv::{Archive as RkyvArchive, Deserialize as RkyvDeserialize, Serialize as RkyvSerialize}; +use rkyv::{ + bytecheck::CheckBytes, Archive as RkyvArchive, Deserialize as RkyvDeserialize, + Serialize as RkyvSerialize, +}; use web_sys::*; @@ -155,7 +158,7 @@ impl ProtectedStore { K: AsRef + fmt::Debug, T: RkyvArchive, ::Archived: - for<'t> bytecheck::CheckBytes>, + for<'t> CheckBytes>, ::Archived: RkyvDeserialize, { diff --git a/veilid-core/src/lib.rs b/veilid-core/src/lib.rs index 18a6f221..c9accd40 100644 --- a/veilid-core/src/lib.rs +++ b/veilid-core/src/lib.rs @@ -30,7 +30,6 @@ mod routing_table; mod rpc_processor; mod storage_manager; mod veilid_api; -#[macro_use] mod veilid_config; mod veilid_layer_filter; @@ -41,6 +40,13 @@ pub use self::veilid_config::*; pub use self::veilid_layer_filter::*; pub use veilid_tools as tools; +use enumset::*; +use rkyv::{ + bytecheck, bytecheck::CheckBytes, Archive as RkyvArchive, Deserialize as RkyvDeserialize, + Serialize as RkyvSerialize, +}; +use serde::*; + pub mod veilid_capnp { include!(concat!(env!("OUT_DIR"), "/proto/veilid_capnp.rs")); } diff --git a/veilid-core/src/network_manager/types/signal_info.rs b/veilid-core/src/network_manager/types/signal_info.rs index f81aef5c..bf2aa861 100644 --- a/veilid-core/src/network_manager/types/signal_info.rs +++ b/veilid-core/src/network_manager/types/signal_info.rs @@ -20,3 +20,32 @@ pub enum SignalInfo { }, // XXX: WebRTC } + +impl SignalInfo { + pub fn validate(&self, crypto: Crypto) -> Result<(), RPCError> { + match self { + SignalInfo::HolePunch { receipt, peer_info } => { + if receipt.len() < MIN_RECEIPT_SIZE { + return Err(RPCError::protocol("SignalInfo HolePunch receipt too short")); + } + if receipt.len() > MAX_RECEIPT_SIZE { + return Err(RPCError::protocol("SignalInfo HolePunch receipt too long")); + } + peer_info.validate(crypto).map_err(RPCError::protocol) + } + SignalInfo::ReverseConnect { receipt, peer_info } => { + if receipt.len() < MIN_RECEIPT_SIZE { + return Err(RPCError::protocol( + "SignalInfo ReverseConnect receipt too short", + )); + } + if receipt.len() > MAX_RECEIPT_SIZE { + return Err(RPCError::protocol( + "SignalInfo ReverseConnect receipt too long", + )); + } + peer_info.validate(crypto).map_err(RPCError::protocol) + } + } + } +} diff --git a/veilid-core/src/routing_table/mod.rs b/veilid-core/src/routing_table/mod.rs index ce165a60..021d9c40 100644 --- a/veilid-core/src/routing_table/mod.rs +++ b/veilid-core/src/routing_table/mod.rs @@ -12,7 +12,7 @@ mod stats_accounting; mod tasks; mod types; -use crate::*; +use super::*; use crate::crypto::*; use crate::network_manager::*; diff --git a/veilid-core/src/routing_table/privacy.rs b/veilid-core/src/routing_table/privacy.rs index a05b08db..06819993 100644 --- a/veilid-core/src/routing_table/privacy.rs +++ b/veilid-core/src/routing_table/privacy.rs @@ -25,13 +25,7 @@ impl RouteNode { pub fn validate(&self, crypto: Crypto) -> Result<(), VeilidAPIError> { match self { RouteNode::NodeId(_) => Ok(()), - RouteNode::PeerInfo(pi) => { - let validated_node_ids = pi.validate(crypto)?; - if validated_node_ids.is_empty() { - apibail_generic!("no validated node ids for route node"); - } - Ok(()) - } + RouteNode::PeerInfo(pi) => pi.validate(crypto), } } diff --git a/veilid-core/src/routing_table/routing_domains.rs b/veilid-core/src/routing_table/routing_domains.rs index ca3693c1..096d777d 100644 --- a/veilid-core/src/routing_table/routing_domains.rs +++ b/veilid-core/src/routing_table/routing_domains.rs @@ -117,7 +117,7 @@ impl RoutingDomainDetailCommon { .and_then(|rn| { let opt_relay_pi = rn.locked(rti).make_peer_info(self.routing_domain); if let Some(relay_pi) = opt_relay_pi { - let (relay_ids, relay_sni) = relay_pi.into_fields(); + let (relay_ids, relay_sni) = relay_pi.destructure(); match relay_sni { SignedNodeInfo::Direct(d) => Some((relay_ids, d)), SignedNodeInfo::Relayed(_) => { diff --git a/veilid-core/src/routing_table/routing_table_inner.rs b/veilid-core/src/routing_table/routing_table_inner.rs index 42ec8e96..4ec518cb 100644 --- a/veilid-core/src/routing_table/routing_table_inner.rs +++ b/veilid-core/src/routing_table/routing_table_inner.rs @@ -835,8 +835,9 @@ impl RoutingTableInner { } } - self.create_node_ref(outer_self, peer_info.node_ids(), |_rti, e| { - e.update_signed_node_info(routing_domain, peer_info.into_signed_node_info()); + let (node_ids, signed_node_info) = peer_info.destructure(); + self.create_node_ref(outer_self, &node_ids, |_rti, e| { + e.update_signed_node_info(routing_domain, signed_node_info); }) .map(|mut nr| { nr.set_filter(Some( diff --git a/veilid-core/src/routing_table/types/peer_info.rs b/veilid-core/src/routing_table/types/peer_info.rs index 9c91382e..179de3ef 100644 --- a/veilid-core/src/routing_table/types/peer_info.rs +++ b/veilid-core/src/routing_table/types/peer_info.rs @@ -16,8 +16,13 @@ impl PeerInfo { } } - pub fn validate(&self, crypto: Crypto) -> Result { - self.signed_node_info.validate(&self.node_ids, crypto) + pub fn validate(&self, crypto: Crypto) -> Result<(), VeilidAPIError> { + let validated_node_ids = self.signed_node_info.validate(&self.node_ids, crypto)?; + if validated_node_ids.is_empty() { + // Shouldn't get here because signed node info validation also checks this + apibail_generic!("no validated node ids"); + } + Ok(()) } pub fn node_ids(&self) -> &TypedKeySet { @@ -26,10 +31,19 @@ impl PeerInfo { pub fn signed_node_info(&self) -> &SignedNodeInfo { &self.signed_node_info } - pub fn into_signed_node_info(self) -> SignedNodeInfo { - self.signed_node_info - } - pub fn into_fields(self) -> (TypedKeySet, SignedNodeInfo) { + pub fn destructure(self) -> (TypedKeySet, SignedNodeInfo) { (self.node_ids, self.signed_node_info) } + + pub fn validate_vec(peer_info_vec: &mut Vec, crypto: Crypto) { + let mut n = 0usize; + while n < peer_info_vec.len() { + let pi = peer_info_vec.get(n).unwrap(); + if pi.validate(crypto.clone()).is_err() { + peer_info_vec.remove(n); + } else { + n += 1; + } + } + } } diff --git a/veilid-core/src/rpc_processor/coders/mod.rs b/veilid-core/src/rpc_processor/coders/mod.rs index 8ede58ce..8ea4871e 100644 --- a/veilid-core/src/rpc_processor/coders/mod.rs +++ b/veilid-core/src/rpc_processor/coders/mod.rs @@ -57,3 +57,19 @@ pub use typed_signature::*; pub use value_detail::*; use super::*; + +#[derive(Debug, Clone)] +pub struct DecodeContext { + config: VeilidConfig, +} + +#[derive(Debug, Clone)] +pub enum QuestionContext { + GetValue(ValidateGetValueContext), +} + +#[derive(Clone)] +pub struct RPCValidateContext { + crypto: Crypto, + question_context: Option, +} diff --git a/veilid-core/src/rpc_processor/coders/operations/answer.rs b/veilid-core/src/rpc_processor/coders/operations/answer.rs index c38f64d7..9f01da68 100644 --- a/veilid-core/src/rpc_processor/coders/operations/answer.rs +++ b/veilid-core/src/rpc_processor/coders/operations/answer.rs @@ -9,15 +9,15 @@ impl RPCAnswer { pub fn new(detail: RPCAnswerDetail) -> Self { Self { detail } } - pub fn validate(&self, crypto: Crypto) -> Result<(), RPCError> { - self.detail.validate(crypto) - } - pub fn into_detail(self) -> RPCAnswerDetail { - self.detail + pub fn validate(&mut self, validate_context: &RPCValidateContext) -> Result<(), RPCError> { + self.detail.validate(validate_context) } pub fn desc(&self) -> &'static str { self.detail.desc() } + pub fn destructure(self) -> RPCAnswerDetail { + self.detail + } pub fn decode(reader: &veilid_capnp::answer::Reader) -> Result { let d_reader = reader.get_detail(); let detail = RPCAnswerDetail::decode(&d_reader)?; @@ -60,19 +60,19 @@ impl RPCAnswerDetail { RPCAnswerDetail::CancelTunnelA(_) => "CancelTunnelA", } } - pub fn validate(&self, crypto: Crypto) -> Result<(), RPCError> { + pub fn validate(&mut self, validate_context: &RPCValidateContext) -> Result<(), RPCError> { match self { - RPCAnswerDetail::StatusA(r) => r.validate(crypto), - RPCAnswerDetail::FindNodeA(r) => r.validate(crypto), - RPCAnswerDetail::AppCallA(r) => r.validate(crypto), - RPCAnswerDetail::GetValueA(r) => r.validate(crypto), - RPCAnswerDetail::SetValueA(r) => r.validate(crypto), - RPCAnswerDetail::WatchValueA(r) => r.validate(crypto), - RPCAnswerDetail::SupplyBlockA(r) => r.validate(crypto), - RPCAnswerDetail::FindBlockA(r) => r.validate(crypto), - RPCAnswerDetail::StartTunnelA(r) => r.validate(crypto), - RPCAnswerDetail::CompleteTunnelA(r) => r.validate(crypto), - RPCAnswerDetail::CancelTunnelA(r) => r.validate(crypto), + RPCAnswerDetail::StatusA(r) => r.validate(validate_context), + RPCAnswerDetail::FindNodeA(r) => r.validate(validate_context), + RPCAnswerDetail::AppCallA(r) => r.validate(validate_context), + RPCAnswerDetail::GetValueA(r) => r.validate(validate_context), + RPCAnswerDetail::SetValueA(r) => r.validate(validate_context), + RPCAnswerDetail::WatchValueA(r) => r.validate(validate_context), + RPCAnswerDetail::SupplyBlockA(r) => r.validate(validate_context), + RPCAnswerDetail::FindBlockA(r) => r.validate(validate_context), + RPCAnswerDetail::StartTunnelA(r) => r.validate(validate_context), + RPCAnswerDetail::CompleteTunnelA(r) => r.validate(validate_context), + RPCAnswerDetail::CancelTunnelA(r) => r.validate(validate_context), } } pub fn decode( diff --git a/veilid-core/src/rpc_processor/coders/operations/operation.rs b/veilid-core/src/rpc_processor/coders/operations/operation.rs index c0161b6d..af5df0b4 100644 --- a/veilid-core/src/rpc_processor/coders/operations/operation.rs +++ b/veilid-core/src/rpc_processor/coders/operations/operation.rs @@ -16,11 +16,11 @@ impl RPCOperationKind { } } - pub fn validate(&self, crypto: Crypto) -> Result<(), RPCError> { + pub fn validate(&mut self, validate_context: &RPCValidateContext) -> Result<(), RPCError> { match self { - RPCOperationKind::Question(r) => r.validate(crypto), - RPCOperationKind::Statement(r) => r.validate(crypto), - RPCOperationKind::Answer(r) => r.validate(crypto), + RPCOperationKind::Question(r) => r.validate(validate_context), + RPCOperationKind::Statement(r) => r.validate(validate_context), + RPCOperationKind::Answer(r) => r.validate(validate_context), } } @@ -98,13 +98,15 @@ impl RPCOperation { } } - pub fn validate(&self, crypto: Crypto) -> Result<(), RPCError> { + pub fn validate(&mut self, validate_context: &RPCValidateContext) -> Result<(), RPCError> { // Validate sender peer info if let Some(sender_peer_info) = &self.opt_sender_peer_info { - sender_peer_info.validate(crypto.clone())?; + sender_peer_info + .validate(validate_context.crypto.clone()) + .map_err(RPCError::protocol)?; } // Validate operation kind - self.kind.validate(crypto) + self.kind.validate(validate_context) } pub fn op_id(&self) -> OperationId { @@ -122,11 +124,19 @@ impl RPCOperation { &self.kind } - pub fn into_kind(self) -> RPCOperationKind { - self.kind + pub fn destructure(self) -> (OperationId, Option, Timestamp, RPCOperationKind) { + ( + self.op_id, + self.opt_sender_peer_info, + self.target_node_info_ts, + self.kind, + ) } - pub fn decode(operation_reader: &veilid_capnp::operation::Reader) -> Result { + pub fn decode( + context: &DecodeContext, + operation_reader: &veilid_capnp::operation::Reader, + ) -> Result { let op_id = OperationId::new(operation_reader.get_op_id()); let sender_peer_info = if operation_reader.has_sender_peer_info() { diff --git a/veilid-core/src/rpc_processor/coders/operations/operation_app_call.rs b/veilid-core/src/rpc_processor/coders/operations/operation_app_call.rs index 0015134a..7f2d98e0 100644 --- a/veilid-core/src/rpc_processor/coders/operations/operation_app_call.rs +++ b/veilid-core/src/rpc_processor/coders/operations/operation_app_call.rs @@ -1,20 +1,30 @@ use super::*; +const MAX_APP_CALL_Q_MESSAGE_LEN: usize = 32768; +const MAX_APP_CALL_A_MESSAGE_LEN: usize = 32768; + #[derive(Debug, Clone)] pub struct RPCOperationAppCallQ { - pub message: Vec, + message: Vec, } impl RPCOperationAppCallQ { - pub fn validate(&self, crypto: Crypto) -> Result<(), RPCError> { - xxx length should be checked in decode verify this + pub fn new(message: &[u8]) -> Result { + if message.len() > MAX_APP_CALL_Q_MESSAGE_LEN { + return Err(RPCError::protocol("AppCallQ message too long to set")); + } + Ok(Self { + message: message.to_vec(), + }) + } + pub fn validate(&mut self, _validate_context: &RPCValidateContext) -> Result<(), RPCError> { Ok(()) } pub fn decode( reader: &veilid_capnp::operation_app_call_q::Reader, ) -> Result { - let message = reader.get_message().map_err(RPCError::protocol)?.to_vec(); - Ok(RPCOperationAppCallQ { message }) + let mr = reader.get_message().map_err(RPCError::protocol)?; + RPCOperationAppCallQ::new(mr) } pub fn encode( &self, @@ -23,19 +33,39 @@ impl RPCOperationAppCallQ { builder.set_message(&self.message); Ok(()) } + + pub fn message(&self) -> &[u8] { + &self.message + } + + pub fn destructure(self) -> Vec { + self.message + } } #[derive(Debug, Clone)] pub struct RPCOperationAppCallA { - pub message: Vec, + message: Vec, } impl RPCOperationAppCallA { + pub fn new(message: &[u8]) -> Result { + if message.len() > MAX_APP_CALL_A_MESSAGE_LEN { + return Err(RPCError::protocol("AppCallA message too long to set")); + } + Ok(Self { + message: message.to_vec(), + }) + } + + pub fn validate(&mut self, _validate_context: &RPCValidateContext) -> Result<(), RPCError> { + Ok(()) + } pub fn decode( reader: &veilid_capnp::operation_app_call_a::Reader, ) -> Result { - let message = reader.get_message().map_err(RPCError::protocol)?.to_vec(); - Ok(RPCOperationAppCallA { message }) + let mr = reader.get_message().map_err(RPCError::protocol)?; + RPCOperationAppCallA::new(mr) } pub fn encode( &self, @@ -44,4 +74,12 @@ impl RPCOperationAppCallA { builder.set_message(&self.message); Ok(()) } + + pub fn message(&self) -> &[u8] { + &self.message + } + + pub fn destructure(self) -> Vec { + self.message + } } diff --git a/veilid-core/src/rpc_processor/coders/operations/operation_app_message.rs b/veilid-core/src/rpc_processor/coders/operations/operation_app_message.rs index 5c969be7..17612cfc 100644 --- a/veilid-core/src/rpc_processor/coders/operations/operation_app_message.rs +++ b/veilid-core/src/rpc_processor/coders/operations/operation_app_message.rs @@ -1,16 +1,30 @@ use super::*; +const MAX_APP_MESSAGE_MESSAGE_LEN: usize = 32768; + #[derive(Debug, Clone)] pub struct RPCOperationAppMessage { - pub message: Vec, + message: Vec, } impl RPCOperationAppMessage { + pub fn new(message: &[u8]) -> Result { + if message.len() > MAX_APP_MESSAGE_MESSAGE_LEN { + return Err(RPCError::protocol("AppMessage message too long to set")); + } + Ok(Self { + message: message.to_vec(), + }) + } + + pub fn validate(&mut self, _validate_context: &RPCValidateContext) -> Result<(), RPCError> { + Ok(()) + } pub fn decode( reader: &veilid_capnp::operation_app_message::Reader, ) -> Result { - let message = reader.get_message().map_err(RPCError::protocol)?.to_vec(); - Ok(RPCOperationAppMessage { message }) + let mr = reader.get_message().map_err(RPCError::protocol)?; + RPCOperationAppMessage::new(mr) } pub fn encode( &self, @@ -19,4 +33,12 @@ impl RPCOperationAppMessage { builder.set_message(&self.message); Ok(()) } + + pub fn message(&self) -> &[u8] { + &self.message + } + + pub fn destructure(self) -> Vec { + self.message + } } diff --git a/veilid-core/src/rpc_processor/coders/operations/operation_cancel_tunnel.rs b/veilid-core/src/rpc_processor/coders/operations/operation_cancel_tunnel.rs index 3484ab0c..1a892676 100644 --- a/veilid-core/src/rpc_processor/coders/operations/operation_cancel_tunnel.rs +++ b/veilid-core/src/rpc_processor/coders/operations/operation_cancel_tunnel.rs @@ -2,10 +2,16 @@ use super::*; #[derive(Debug, Clone)] pub struct RPCOperationCancelTunnelQ { - pub id: TunnelId, + id: TunnelId, } impl RPCOperationCancelTunnelQ { + pub fn new(id: TunnelId) -> Self { + Self { id } + } + pub fn validate(&mut self, _validate_context: &RPCValidateContext) -> Result<(), RPCError> { + Ok(()) + } pub fn decode( reader: &veilid_capnp::operation_cancel_tunnel_q::Reader, ) -> Result { @@ -21,6 +27,13 @@ impl RPCOperationCancelTunnelQ { Ok(()) } + pub fn id(&self) -> TunnelId { + self.id + } + + pub fn destructure(self) -> TunnelId { + self.id + } } #[derive(Debug, Clone)] @@ -30,6 +43,15 @@ pub enum RPCOperationCancelTunnelA { } impl RPCOperationCancelTunnelA { + pub fn new_tunnel(id: TunnelId) -> Self { + Self::Tunnel(id) + } + pub fn new_error(error: TunnelError) -> Self { + Self::Error(error) + } + pub fn validate(&mut self, _validate_context: &RPCValidateContext) -> Result<(), RPCError> { + Ok(()) + } pub fn decode( reader: &veilid_capnp::operation_cancel_tunnel_a::Reader, ) -> Result { diff --git a/veilid-core/src/rpc_processor/coders/operations/operation_complete_tunnel.rs b/veilid-core/src/rpc_processor/coders/operations/operation_complete_tunnel.rs index e4737a2d..8ec27b59 100644 --- a/veilid-core/src/rpc_processor/coders/operations/operation_complete_tunnel.rs +++ b/veilid-core/src/rpc_processor/coders/operations/operation_complete_tunnel.rs @@ -2,13 +2,24 @@ use super::*; #[derive(Debug, Clone)] pub struct RPCOperationCompleteTunnelQ { - pub id: TunnelId, - pub local_mode: TunnelMode, - pub depth: u8, - pub endpoint: TunnelEndpoint, + id: TunnelId, + local_mode: TunnelMode, + depth: u8, + endpoint: TunnelEndpoint, } impl RPCOperationCompleteTunnelQ { + pub fn new(id: TunnelId, local_mode: TunnelMode, depth: u8, endpoint: TunnelEndpoint) -> Self { + Self { + id, + local_mode, + depth, + endpoint, + } + } + pub fn validate(&mut self, _validate_context: &RPCValidateContext) -> Result<(), RPCError> { + Ok(()) + } pub fn decode( reader: &veilid_capnp::operation_complete_tunnel_q::Reader, ) -> Result { @@ -43,6 +54,23 @@ impl RPCOperationCompleteTunnelQ { Ok(()) } + pub fn id(&self) -> TunnelId { + self.id + } + + pub fn local_mode(&self) -> TunnelMode { + self.local_mode + } + pub fn depth(&self) -> u8 { + self.depth + } + pub fn endpoint(&self) -> &TunnelEndpoint { + &self.endpoint + } + + pub fn destructure(self) -> (TunnelId, TunnelMode, u8, TunnelEndpoint) { + (self.id, self.local_mode, self.depth, self.endpoint) + } } #[derive(Debug, Clone)] @@ -52,6 +80,16 @@ pub enum RPCOperationCompleteTunnelA { } impl RPCOperationCompleteTunnelA { + pub fn new_tunnel(tunnel: FullTunnel) -> Self { + Self::Tunnel(tunnel) + } + pub fn new_error(error: TunnelError) -> Self { + Self::Error(error) + } + pub fn validate(&mut self, _validate_context: &RPCValidateContext) -> Result<(), RPCError> { + Ok(()) + } + pub fn decode( reader: &veilid_capnp::operation_complete_tunnel_a::Reader, ) -> Result { diff --git a/veilid-core/src/rpc_processor/coders/operations/operation_find_block.rs b/veilid-core/src/rpc_processor/coders/operations/operation_find_block.rs index 6c69457e..80a2075e 100644 --- a/veilid-core/src/rpc_processor/coders/operations/operation_find_block.rs +++ b/veilid-core/src/rpc_processor/coders/operations/operation_find_block.rs @@ -1,18 +1,28 @@ use super::*; +const MAX_FIND_BLOCK_A_DATA_LEN: usize = 32768; +const MAX_FIND_BLOCK_A_SUPPLIERS_LEN: usize = 10; +const MAX_FIND_BLOCK_A_PEERS_LEN: usize = 10; + #[derive(Debug, Clone)] pub struct RPCOperationFindBlockQ { - pub block_id: TypedKey, + block_id: TypedKey, } impl RPCOperationFindBlockQ { + pub fn new(block_id: TypedKey) -> Self { + Self { block_id } + } + pub fn validate(&mut self, _validate_context: &RPCValidateContext) -> Result<(), RPCError> { + Ok(()) + } pub fn decode( reader: &veilid_capnp::operation_find_block_q::Reader, ) -> Result { let bi_reader = reader.get_block_id().map_err(RPCError::protocol)?; let block_id = decode_typed_key(&bi_reader)?; - Ok(RPCOperationFindBlockQ { block_id }) + Ok(RPCOperationFindBlockQ::new(block_id)) } pub fn encode( &self, @@ -23,22 +33,68 @@ impl RPCOperationFindBlockQ { Ok(()) } + + pub fn block_id(&self) -> TypedKey { + self.block_id + } + + pub fn destructure(self) -> TypedKey { + self.block_id + } } #[derive(Debug, Clone)] pub struct RPCOperationFindBlockA { - pub data: Vec, - pub suppliers: Vec, - pub peers: Vec, + data: Vec, + suppliers: Vec, + peers: Vec, } impl RPCOperationFindBlockA { + pub fn new( + data: &[u8], + suppliers: Vec, + peers: Vec, + ) -> Result { + if data.len() > MAX_FIND_BLOCK_A_DATA_LEN { + return Err(RPCError::protocol("find block data length too long")); + } + if suppliers.len() > MAX_FIND_BLOCK_A_SUPPLIERS_LEN { + return Err(RPCError::protocol("find block suppliers length too long")); + } + if peers.len() > MAX_FIND_BLOCK_A_PEERS_LEN { + return Err(RPCError::protocol("find block peers length too long")); + } + + Ok(Self { + data: data.to_vec(), + suppliers, + peers, + }) + } + pub fn validate(&mut self, validate_context: &RPCValidateContext) -> Result<(), RPCError> { + PeerInfo::validate_vec(&mut self.suppliers, validate_context.crypto.clone()); + PeerInfo::validate_vec(&mut self.peers, validate_context.crypto.clone()); + Ok(()) + } + pub fn decode( reader: &veilid_capnp::operation_find_block_a::Reader, ) -> Result { - let data = reader.get_data().map_err(RPCError::protocol)?.to_vec(); - + let data = reader.get_data().map_err(RPCError::protocol)?; let suppliers_reader = reader.get_suppliers().map_err(RPCError::protocol)?; + let peers_reader = reader.get_peers().map_err(RPCError::protocol)?; + + if data.len() > MAX_FIND_BLOCK_A_DATA_LEN { + return Err(RPCError::protocol("find block data length too long")); + } + if suppliers_reader.len() as usize > MAX_FIND_BLOCK_A_SUPPLIERS_LEN { + return Err(RPCError::protocol("find block suppliers length too long")); + } + if peers_reader.len() as usize > MAX_FIND_BLOCK_A_PEERS_LEN { + return Err(RPCError::protocol("find block peers length too long")); + } + let mut suppliers = Vec::::with_capacity( suppliers_reader .len() @@ -50,7 +106,6 @@ impl RPCOperationFindBlockA { suppliers.push(peer_info); } - let peers_reader = reader.get_peers().map_err(RPCError::protocol)?; let mut peers = Vec::::with_capacity( peers_reader .len() @@ -62,11 +117,7 @@ impl RPCOperationFindBlockA { peers.push(peer_info); } - Ok(RPCOperationFindBlockA { - data, - suppliers, - peers, - }) + RPCOperationFindBlockA::new(data, suppliers, peers) } pub fn encode( @@ -99,4 +150,18 @@ impl RPCOperationFindBlockA { Ok(()) } + + pub fn data(&self) -> &[u8] { + &self.data + } + pub fn suppliers(&self) -> &[PeerInfo] { + &self.suppliers + } + pub fn peers(&self) -> &[PeerInfo] { + &self.peers + } + + pub fn destructure(self) -> (Vec, Vec, Vec) { + (self.data, self.suppliers, self.peers) + } } diff --git a/veilid-core/src/rpc_processor/coders/operations/operation_find_node.rs b/veilid-core/src/rpc_processor/coders/operations/operation_find_node.rs index 2ac914ea..3b5352d2 100644 --- a/veilid-core/src/rpc_processor/coders/operations/operation_find_node.rs +++ b/veilid-core/src/rpc_processor/coders/operations/operation_find_node.rs @@ -1,12 +1,17 @@ use super::*; +const MAX_FIND_NODE_A_PEERS_LEN: usize = 20; + #[derive(Debug, Clone)] pub struct RPCOperationFindNodeQ { - pub node_id: TypedKey, + node_id: TypedKey, } impl RPCOperationFindNodeQ { - pub fn validate(&self, crypto: Crypto) -> Result<(), RPCError> { + pub fn new(node_id: TypedKey) -> Self { + Self { node_id } + } + pub fn validate(&mut self, _validate_context: &RPCValidateContext) -> Result<(), RPCError> { Ok(()) } pub fn decode( @@ -24,24 +29,43 @@ impl RPCOperationFindNodeQ { encode_typed_key(&self.node_id, &mut ni_builder); Ok(()) } + + pub fn node_id(&self) -> &TypedKey { + &self.node_id + } + + pub fn destructure(self) -> TypedKey { + self.node_id + } } #[derive(Debug, Clone)] pub struct RPCOperationFindNodeA { - pub peers: Vec, + peers: Vec, } impl RPCOperationFindNodeA { - pub fn validate(&self, crypto: Crypto) -> Result<(), RPCError> { - for pi in &self.peers { - pi.validate(crypto.clone()).map_err(RPCError::protocol)?; + pub fn new(peers: Vec) -> Result { + if peers.len() > MAX_FIND_NODE_A_PEERS_LEN { + return Err(RPCError::protocol("find node peers length too long")); } + + Ok(Self { peers }) + } + + pub fn validate(&mut self, validate_context: &RPCValidateContext) -> Result<(), RPCError> { + PeerInfo::validate_vec(&mut self.peers, validate_context.crypto.clone()); Ok(()) } pub fn decode( reader: &veilid_capnp::operation_find_node_a::Reader, ) -> Result { let peers_reader = reader.get_peers().map_err(RPCError::protocol)?; + + if peers_reader.len() as usize > MAX_FIND_NODE_A_PEERS_LEN { + return Err(RPCError::protocol("find node peers length too long")); + } + let mut peers = Vec::::with_capacity( peers_reader .len() @@ -53,7 +77,7 @@ impl RPCOperationFindNodeA { peers.push(peer_info); } - Ok(RPCOperationFindNodeA { peers }) + RPCOperationFindNodeA::new(peers) } pub fn encode( &self, @@ -71,4 +95,12 @@ impl RPCOperationFindNodeA { } Ok(()) } + + pub fn peers(&self) -> &[PeerInfo] { + &self.peers + } + + pub fn destructure(self) -> Vec { + self.peers + } } diff --git a/veilid-core/src/rpc_processor/coders/operations/operation_get_value.rs b/veilid-core/src/rpc_processor/coders/operations/operation_get_value.rs index 8e9ddcb9..c1c6c987 100644 --- a/veilid-core/src/rpc_processor/coders/operations/operation_get_value.rs +++ b/veilid-core/src/rpc_processor/coders/operations/operation_get_value.rs @@ -1,13 +1,44 @@ use super::*; +use crate::storage_manager::{SignedValueDescriptor, ValueDetail}; + +const MAX_GET_VALUE_A_PEERS_LEN: usize = 20; + +#[derive(Clone)] +pub struct ValidateGetValueContext { + last_descriptor: Option, + subkey: ValueSubkey, + vcrypto: CryptoSystemVersion, +} + +impl fmt::Debug for ValidateGetValueContext { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("ValidateGetValueContext") + .field("last_descriptor", &self.last_descriptor) + .field("subkey", &self.subkey) + .field("vcrypto", &self.vcrypto.kind().to_string()) + .finish() + } +} #[derive(Debug, Clone)] pub struct RPCOperationGetValueQ { - pub key: TypedKey, - pub subkey: ValueSubkey, - pub want_descriptor: bool, + key: TypedKey, + subkey: ValueSubkey, + want_descriptor: bool, } impl RPCOperationGetValueQ { + pub fn new(key: TypedKey, subkey: ValueSubkey, want_descriptor: bool) -> Self { + Self { + key, + subkey, + want_descriptor, + } + } + pub fn validate(&mut self, _validate_context: &RPCValidateContext) -> Result<(), RPCError> { + Ok(()) + } + pub fn decode( reader: &veilid_capnp::operation_get_value_q::Reader, ) -> Result { @@ -31,6 +62,18 @@ impl RPCOperationGetValueQ { builder.set_want_descriptor(self.want_descriptor); Ok(()) } + pub fn key(&self) -> &TypedKey { + &self.key + } + pub fn subkey(&self) -> ValueSubkey { + self.subkey + } + pub fn want_descriptor(&self) -> bool { + self.want_descriptor + } + pub fn destructure(self) -> (TypedKey, ValueSubkey, bool) { + (self.key, self.subkey, self.want_descriptor) + } } #[derive(Debug, Clone)] @@ -40,16 +83,53 @@ pub enum RPCOperationGetValueA { } impl RPCOperationGetValueA { + pub fn new_value(value: ValueDetail) -> Self { + Self::Value(value) + } + pub fn new_peers(peers: Vec) -> Result { + if peers.len() > MAX_GET_VALUE_A_PEERS_LEN { + return Err(RPCError::protocol("GetValueA peers length too long")); + } + Ok(Self::Peers(peers)) + } + pub fn validate(&mut self, validate_context: &RPCValidateContext) -> Result<(), RPCError> { + match self { + RPCOperationGetValueA::Value(value_detail) => { + let question_context = validate_context + .question_context + .as_ref() + .expect("GetValueA requires question context"); + let QuestionContext::GetValue(get_value_context) = question_context else { + panic!("Wrong context type for GetValueA"); + }; + value_detail + .validate( + get_value_context.last_descriptor.as_ref(), + get_value_context.subkey, + get_value_context.vcrypto.clone(), + ) + .map_err(RPCError::protocol) + } + RPCOperationGetValueA::Peers(peers) => { + PeerInfo::validate_vec(peers, validate_context.crypto.clone()); + Ok(()) + } + } + } + pub fn decode( reader: &veilid_capnp::operation_get_value_a::Reader, ) -> Result { match reader.which().map_err(RPCError::protocol)? { veilid_capnp::operation_get_value_a::Which::Value(r) => { let value_detail = decode_value_detail(&r.map_err(RPCError::protocol)?)?; - Ok(RPCOperationGetValueA::Data(data)) + Ok(RPCOperationGetValueA::Value(value_detail)) } veilid_capnp::operation_get_value_a::Which::Peers(r) => { let peers_reader = r.map_err(RPCError::protocol)?; + if peers_reader.len() as usize > MAX_GET_VALUE_A_PEERS_LEN { + return Err(RPCError::protocol("GetValueA peers length too long")); + } let mut peers = Vec::::with_capacity( peers_reader .len() @@ -70,9 +150,9 @@ impl RPCOperationGetValueA { builder: &mut veilid_capnp::operation_get_value_a::Builder, ) -> Result<(), RPCError> { match self { - RPCOperationGetValueA::Data(data) => { - let mut d_builder = builder.reborrow().init_data(); - encode_value_data(&data, &mut d_builder)?; + RPCOperationGetValueA::Value(value_detail) => { + let mut d_builder = builder.reborrow().init_value(); + encode_value_detail(&value_detail, &mut d_builder)?; } RPCOperationGetValueA::Peers(peers) => { let mut peers_builder = builder.reborrow().init_peers( diff --git a/veilid-core/src/rpc_processor/coders/operations/operation_return_receipt.rs b/veilid-core/src/rpc_processor/coders/operations/operation_return_receipt.rs index bd7517a7..3930c33e 100644 --- a/veilid-core/src/rpc_processor/coders/operations/operation_return_receipt.rs +++ b/veilid-core/src/rpc_processor/coders/operations/operation_return_receipt.rs @@ -2,17 +2,31 @@ use super::*; #[derive(Debug, Clone)] pub struct RPCOperationReturnReceipt { - pub receipt: Vec, + receipt: Vec, } impl RPCOperationReturnReceipt { + pub fn new(receipt: &[u8]) -> Result { + if receipt.len() < MIN_RECEIPT_SIZE { + return Err(RPCError::protocol("ReturnReceipt receipt too short to set")); + } + if receipt.len() > MAX_RECEIPT_SIZE { + return Err(RPCError::protocol("ReturnReceipt receipt too long to set")); + } + + Ok(Self { + receipt: receipt.to_vec(), + }) + } + pub fn validate(&mut self, _validate_context: &RPCValidateContext) -> Result<(), RPCError> { + Ok(()) + } + pub fn decode( reader: &veilid_capnp::operation_return_receipt::Reader, ) -> Result { - let rcpt_reader = reader.get_receipt().map_err(RPCError::protocol)?; - let receipt = rcpt_reader.to_vec(); - - Ok(RPCOperationReturnReceipt { receipt }) + let rr = reader.get_receipt().map_err(RPCError::protocol)?; + RPCOperationReturnReceipt::new(rr) } pub fn encode( &self, @@ -21,4 +35,12 @@ impl RPCOperationReturnReceipt { builder.set_receipt(&self.receipt); Ok(()) } + + pub fn receipt(&self) -> &[u8] { + &self.receipt + } + + pub fn destructure(self) -> Vec { + self.receipt + } } diff --git a/veilid-core/src/rpc_processor/coders/operations/operation_signal.rs b/veilid-core/src/rpc_processor/coders/operations/operation_signal.rs index 4b8a6fd3..cfc9dcab 100644 --- a/veilid-core/src/rpc_processor/coders/operations/operation_signal.rs +++ b/veilid-core/src/rpc_processor/coders/operations/operation_signal.rs @@ -2,10 +2,16 @@ use super::*; #[derive(Debug, Clone)] pub struct RPCOperationSignal { - pub signal_info: SignalInfo, + signal_info: SignalInfo, } impl RPCOperationSignal { + pub fn new(signal_info: SignalInfo) -> Self { + Self { signal_info } + } + pub fn validate(&mut self, validate_context: &RPCValidateContext) -> Result<(), RPCError> { + self.signal_info.validate(validate_context.crypto.clone()) + } pub fn decode( reader: &veilid_capnp::operation_signal::Reader, ) -> Result { @@ -19,4 +25,10 @@ impl RPCOperationSignal { encode_signal_info(&self.signal_info, builder)?; Ok(()) } + pub fn signal_info(&self) -> &SignalInfo { + &self.signal_info + } + pub fn destructure(self) -> SignalInfo { + self.signal_info + } } diff --git a/veilid-core/src/rpc_processor/coders/operations/operation_status.rs b/veilid-core/src/rpc_processor/coders/operations/operation_status.rs index 42202328..96ed390c 100644 --- a/veilid-core/src/rpc_processor/coders/operations/operation_status.rs +++ b/veilid-core/src/rpc_processor/coders/operations/operation_status.rs @@ -6,7 +6,7 @@ pub struct RPCOperationStatusQ { } impl RPCOperationStatusQ { - pub fn validate(&self, crypto: Crypto) -> Result<(), RPCError> { + pub fn validate(mut self, _validate_context: &RPCValidateContext) -> Result<(), RPCError> { Ok(()) } @@ -41,7 +41,7 @@ pub struct RPCOperationStatusA { } impl RPCOperationStatusA { - pub fn validate(&self, crypto: Crypto) -> Result<(), RPCError> { + pub fn validate(&mut self, _validate_context: &RPCValidateContext) -> Result<(), RPCError> { Ok(()) } pub fn decode( diff --git a/veilid-core/src/rpc_processor/coders/operations/operation_supply_block.rs b/veilid-core/src/rpc_processor/coders/operations/operation_supply_block.rs index a2d808e5..56c7fb55 100644 --- a/veilid-core/src/rpc_processor/coders/operations/operation_supply_block.rs +++ b/veilid-core/src/rpc_processor/coders/operations/operation_supply_block.rs @@ -34,7 +34,7 @@ pub enum RPCOperationSupplyBlockA { impl RPCOperationSupplyBlockA { pub fn decode( reader: &veilid_capnp::operation_supply_block_a::Reader, -= ) -> Result { + ) -> Result { match reader.which().map_err(RPCError::protocol)? { veilid_capnp::operation_supply_block_a::Which::Expiration(r) => { Ok(RPCOperationSupplyBlockA::Expiration(r)) diff --git a/veilid-core/src/rpc_processor/coders/operations/question.rs b/veilid-core/src/rpc_processor/coders/operations/question.rs index 5935b6aa..8e0db706 100644 --- a/veilid-core/src/rpc_processor/coders/operations/question.rs +++ b/veilid-core/src/rpc_processor/coders/operations/question.rs @@ -10,9 +10,9 @@ impl RPCQuestion { pub fn new(respond_to: RespondTo, detail: RPCQuestionDetail) -> Self { Self { respond_to, detail } } - pub fn validate(&self, crypto: Crypto) -> Result<(), RPCError> { - self.respond_to.validate(crypto.clone())?; - self.detail.validate(crypto) + pub fn validate(&mut self, validate_context: &RPCValidateContext) -> Result<(), RPCError> { + self.respond_to.validate(validate_context)?; + self.detail.validate(validate_context) } pub fn respond_to(&self) -> &RespondTo { &self.respond_to @@ -23,6 +23,9 @@ impl RPCQuestion { pub fn desc(&self) -> &'static str { self.detail.desc() } + pub fn destructure(self) -> (RespondTo, RPCQuestionDetail) { + (self.respond_to, self.detail) + } pub fn decode(reader: &veilid_capnp::question::Reader) -> Result { let rt_reader = reader.get_respond_to(); let respond_to = RespondTo::decode(&rt_reader)?; @@ -69,19 +72,19 @@ impl RPCQuestionDetail { RPCQuestionDetail::CancelTunnelQ(_) => "CancelTunnelQ", } } - pub fn validate(&self, crypto: Crypto) -> Result<(), RPCError> { + pub fn validate(&mut self, validate_context: &RPCValidateContext) -> Result<(), RPCError> { match self { - RPCQuestionDetail::StatusQ(r) => r.validate(crypto), - RPCQuestionDetail::FindNodeQ(r) => r.validate(crypto), - RPCQuestionDetail::AppCallQ(r) => r.validate(crypto), - RPCQuestionDetail::GetValueQ(r) => r.validate(crypto), - RPCQuestionDetail::SetValueQ(r) => r.validate(crypto), - RPCQuestionDetail::WatchValueQ(r) => r.validate(crypto), - RPCQuestionDetail::SupplyBlockQ(r) => r.validate(crypto), - RPCQuestionDetail::FindBlockQ(r) => r.validate(crypto), - RPCQuestionDetail::StartTunnelQ(r) => r.validate(crypto), - RPCQuestionDetail::CompleteTunnelQ(r) => r.validate(crypto), - RPCQuestionDetail::CancelTunnelQ(r) => r.validate(crypto), + RPCQuestionDetail::StatusQ(r) => r.validate(validate_context), + RPCQuestionDetail::FindNodeQ(r) => r.validate(validate_context), + RPCQuestionDetail::AppCallQ(r) => r.validate(validate_context), + RPCQuestionDetail::GetValueQ(r) => r.validate(validate_context), + RPCQuestionDetail::SetValueQ(r) => r.validate(validate_context), + RPCQuestionDetail::WatchValueQ(r) => r.validate(validate_context), + RPCQuestionDetail::SupplyBlockQ(r) => r.validate(validate_context), + RPCQuestionDetail::FindBlockQ(r) => r.validate(validate_context), + RPCQuestionDetail::StartTunnelQ(r) => r.validate(validate_context), + RPCQuestionDetail::CompleteTunnelQ(r) => r.validate(validate_context), + RPCQuestionDetail::CancelTunnelQ(r) => r.validate(validate_context), } } diff --git a/veilid-core/src/rpc_processor/coders/operations/respond_to.rs b/veilid-core/src/rpc_processor/coders/operations/respond_to.rs index 92b7c9ef..da21fefe 100644 --- a/veilid-core/src/rpc_processor/coders/operations/respond_to.rs +++ b/veilid-core/src/rpc_processor/coders/operations/respond_to.rs @@ -7,10 +7,12 @@ pub enum RespondTo { } impl RespondTo { - pub fn validate(&self, crypto: Crypto) -> Result<(), RPCError> { + pub fn validate(&mut self, validate_context: &RPCValidateContext) -> Result<(), RPCError> { match self { RespondTo::Sender => Ok(()), - RespondTo::PrivateRoute(pr) => pr.validate(crypto).map_err(RPCError::protocol), + RespondTo::PrivateRoute(pr) => pr + .validate(validate_context.crypto.clone()) + .map_err(RPCError::protocol), } } diff --git a/veilid-core/src/rpc_processor/coders/operations/statement.rs b/veilid-core/src/rpc_processor/coders/operations/statement.rs index cd6b1ecc..08241e24 100644 --- a/veilid-core/src/rpc_processor/coders/operations/statement.rs +++ b/veilid-core/src/rpc_processor/coders/operations/statement.rs @@ -9,18 +9,18 @@ impl RPCStatement { pub fn new(detail: RPCStatementDetail) -> Self { Self { detail } } - pub fn validate(&self, crypto: Crypto) -> Result<(), RPCError> { - self.detail.validate(crypto) + pub fn validate(&mut self, validate_context: &RPCValidateContext) -> Result<(), RPCError> { + self.detail.validate(validate_context) } pub fn detail(&self) -> &RPCStatementDetail { &self.detail } - pub fn into_detail(self) -> RPCStatementDetail { - self.detail - } pub fn desc(&self) -> &'static str { self.detail.desc() } + pub fn destructure(self) -> RPCStatementDetail { + self.detail + } pub fn decode(reader: &veilid_capnp::statement::Reader) -> Result { let d_reader = reader.get_detail(); let detail = RPCStatementDetail::decode(&d_reader)?; @@ -53,14 +53,14 @@ impl RPCStatementDetail { RPCStatementDetail::AppMessage(_) => "AppMessage", } } - pub fn validate(&self, crypto: Crypto) -> Result<(), RPCError> { + pub fn validate(&mut self, validate_context: &RPCValidateContext) -> Result<(), RPCError> { match self { - RPCStatementDetail::ValidateDialInfo(r) => r.validate(crypto), - RPCStatementDetail::Route(r) => r.validate(crypto), - RPCStatementDetail::ValueChanged(r) => r.validate(crypto), - RPCStatementDetail::Signal(r) => r.validate(crypto), - RPCStatementDetail::ReturnReceipt(r) => r.validate(crypto), - RPCStatementDetail::AppMessage(r) => r.validate(crypto), + RPCStatementDetail::ValidateDialInfo(r) => r.validate(validate_context), + RPCStatementDetail::Route(r) => r.validate(validate_context), + RPCStatementDetail::ValueChanged(r) => r.validate(validate_context), + RPCStatementDetail::Signal(r) => r.validate(validate_context), + RPCStatementDetail::ReturnReceipt(r) => r.validate(validate_context), + RPCStatementDetail::AppMessage(r) => r.validate(validate_context), } } pub fn decode( diff --git a/veilid-core/src/rpc_processor/mod.rs b/veilid-core/src/rpc_processor/mod.rs index d24f88f2..024fc35f 100644 --- a/veilid-core/src/rpc_processor/mod.rs +++ b/veilid-core/src/rpc_processor/mod.rs @@ -149,7 +149,7 @@ where #[derive(Debug)] struct WaitableReply { - handle: OperationWaitHandle, + handle: OperationWaitHandle>, timeout_us: TimestampDuration, node_ref: NodeRef, send_ts: Timestamp, @@ -235,8 +235,8 @@ pub struct RPCProcessorUnlockedInner { max_route_hop_count: usize, validate_dial_info_receipt_time_ms: u32, update_callback: UpdateCallback, - waiting_rpc_table: OperationWaiter, - waiting_app_call_table: OperationWaiter>, + waiting_rpc_table: OperationWaiter>, + waiting_app_call_table: OperationWaiter, ()>, } #[derive(Clone)] @@ -998,11 +998,13 @@ impl RPCProcessor { } /// Issue a question over the network, possibly using an anonymized route + /// Optionally keeps a context to be passed to the answer processor when an answer is received #[instrument(level = "debug", skip(self, question), err)] async fn question( &self, dest: Destination, question: RPCQuestion, + context: Option, ) -> Result, RPCError> { // Get sender peer info if we should send that let spi = self.get_sender_peer_info(&dest); @@ -1030,7 +1032,10 @@ impl RPCProcessor { let timeout_us = self.unlocked_inner.timeout_us * (hop_count as u64); // Set up op id eventual - let handle = self.unlocked_inner.waiting_rpc_table.add_op_waiter(op_id); + let handle = self + .unlocked_inner + .waiting_rpc_table + .add_op_waiter(op_id, context); // Send question let bytes: ByteCount = (message.len() as u64).into(); @@ -1189,6 +1194,48 @@ impl RPCProcessor { Ok(NetworkResult::value(())) } + fn decode_rpc_operation( + &self, + encoded_msg: &RPCMessageEncoded, + ) -> Result { + let reader = encoded_msg.data.get_reader()?; + let op_reader = reader + .get_root::() + .map_err(RPCError::protocol) + .map_err(logthru_rpc!())?; + let decode_context = DecodeContext { + config: self.config.clone(), + }; + let operation = RPCOperation::decode(&decode_context, &op_reader)?; + + // Validate the RPC message + self.validate_rpc_operation(&operation)?; + + Ok(operation) + } + + fn validate_rpc_operation(&self, operation: &RPCOperation) -> Result<(), RPCError> { + // If this is an answer, get the question context for this answer + // If we received an answer for a question we did not ask, this will return an error + let question_context = if let RPCOperationKind::Answer(_) = operation.kind() { + let op_id = operation.op_id(); + self.unlocked_inner + .waiting_rpc_table + .get_op_context(op_id)? + } else { + None + }; + + // Validate the RPC operation + let validate_context = RPCValidateContext { + crypto: self.crypto.clone(), + question_context, + }; + operation.validate(&validate_context)?; + + Ok(()) + } + ////////////////////////////////////////////////////////////////////// #[instrument(level = "trace", skip(self, encoded_msg), err)] async fn process_rpc_message( @@ -1198,29 +1245,17 @@ impl RPCProcessor { // Decode operation appropriately based on header detail let msg = match &encoded_msg.header.detail { RPCMessageHeaderDetail::Direct(detail) => { + // Decode and validate the RPC operation + let operation = self.decode_rpc_operation(&encoded_msg)?; + // Get the routing domain this message came over let routing_domain = detail.routing_domain; - // Decode the operation + // Get the sender noderef, incorporating sender's peer info let sender_node_id = TypedKey::new( detail.envelope.get_crypto_kind(), detail.envelope.get_sender_id(), ); - - // Decode the RPC message - let operation = { - let reader = encoded_msg.data.get_reader()?; - let op_reader = reader - .get_root::() - .map_err(RPCError::protocol) - .map_err(logthru_rpc!())?; - RPCOperation::decode(&op_reader)? - }; - - // Validate the RPC operation - operation.validate(self.crypto.clone())?; - - // Get the sender noderef, incorporating sender's peer info let mut opt_sender_nr: Option = None; if let Some(sender_peer_info) = operation.sender_peer_info() { // Ensure the sender peer info is for the actual sender specified in the envelope @@ -1257,18 +1292,8 @@ impl RPCProcessor { } } RPCMessageHeaderDetail::SafetyRouted(_) | RPCMessageHeaderDetail::PrivateRouted(_) => { - // Decode the RPC message - let operation = { - let reader = encoded_msg.data.get_reader()?; - let op_reader = reader - .get_root::() - .map_err(RPCError::protocol) - .map_err(logthru_rpc!())?; - RPCOperation::decode(&op_reader)? - }; - - // Validate the RPC operation - operation.validate(self.crypto.clone())?; + // Decode and validate the RPC operation + let operation = self.decode_rpc_operation(&encoded_msg)?; // Make the RPC message RPCMessage { diff --git a/veilid-core/src/rpc_processor/operation_waiter.rs b/veilid-core/src/rpc_processor/operation_waiter.rs index 0dfdd926..37ee0ce0 100644 --- a/veilid-core/src/rpc_processor/operation_waiter.rs +++ b/veilid-core/src/rpc_processor/operation_waiter.rs @@ -1,18 +1,20 @@ use super::*; #[derive(Debug)] -pub struct OperationWaitHandle +pub struct OperationWaitHandle where T: Unpin, + C: Unpin + Clone, { - waiter: OperationWaiter, + waiter: OperationWaiter, op_id: OperationId, eventual_instance: Option, T)>>, } -impl Drop for OperationWaitHandle +impl Drop for OperationWaitHandle where T: Unpin, + C: Unpin + Clone, { fn drop(&mut self) { if self.eventual_instance.is_some() { @@ -22,24 +24,37 @@ where } #[derive(Debug)] -pub struct OperationWaiterInner +pub struct OperationWaitingOp where T: Unpin, + C: Unpin + Clone, { - waiting_op_table: HashMap, T)>>, + context: C, + eventual: EventualValue<(Option, T)>, } #[derive(Debug)] -pub struct OperationWaiter +pub struct OperationWaiterInner where T: Unpin, + C: Unpin + Clone, { - inner: Arc>>, + waiting_op_table: HashMap>, } -impl Clone for OperationWaiter +#[derive(Debug)] +pub struct OperationWaiter where T: Unpin, + C: Unpin + Clone, +{ + inner: Arc>>, +} + +impl Clone for OperationWaiter +where + T: Unpin, + C: Unpin + Clone, { fn clone(&self) -> Self { Self { @@ -48,9 +63,10 @@ where } } -impl OperationWaiter +impl OperationWaiter where T: Unpin, + C: Unpin + Clone, { pub fn new() -> Self { Self { @@ -60,11 +76,15 @@ where } } - // set up wait for op - pub fn add_op_waiter(&self, op_id: OperationId) -> OperationWaitHandle { + /// Set up wait for operation to complete + pub fn add_op_waiter(&self, op_id: OperationId, context: C) -> OperationWaitHandle { let mut inner = self.inner.lock(); let e = EventualValue::new(); - if inner.waiting_op_table.insert(op_id, e.clone()).is_some() { + let waiting_op = OperationWaitingOp { + context, + eventual: e.clone(), + }; + if inner.waiting_op_table.insert(op_id, waiting_op).is_some() { error!( "add_op_waiter collision should not happen for op_id {}", op_id @@ -78,16 +98,25 @@ where } } - // remove wait for op + /// Get operation context + pub fn get_op_context(&self, op_id: OperationId) -> Result { + let mut inner = self.inner.lock(); + let Some(waiting_op) = inner.waiting_op_table.get(&op_id) else { + return Err(RPCError::internal("Missing operation id getting op context")); + }; + Ok(waiting_op.context.clone()) + } + + /// Remove wait for op fn cancel_op_waiter(&self, op_id: OperationId) { let mut inner = self.inner.lock(); inner.waiting_op_table.remove(&op_id); } - // complete the app call + /// Complete the app call #[instrument(level = "trace", skip(self, message), err)] pub async fn complete_op_waiter(&self, op_id: OperationId, message: T) -> Result<(), RPCError> { - let eventual = { + let waiting_op = { let mut inner = self.inner.lock(); inner .waiting_op_table @@ -97,13 +126,17 @@ where op_id )))? }; - eventual.resolve((Span::current().id(), message)).await; + waiting_op + .eventual + .resolve((Span::current().id(), message)) + .await; Ok(()) } + /// Wait for opeation to complete pub async fn wait_for_op( &self, - mut handle: OperationWaitHandle, + mut handle: OperationWaitHandle, timeout_us: TimestampDuration, ) -> Result, RPCError> { let timeout_ms = u32::try_from(timeout_us.as_u64() / 1000u64) diff --git a/veilid-core/src/rpc_processor/rpc_app_call.rs b/veilid-core/src/rpc_processor/rpc_app_call.rs index 4d6b78c4..5ba05dfb 100644 --- a/veilid-core/src/rpc_processor/rpc_app_call.rs +++ b/veilid-core/src/rpc_processor/rpc_app_call.rs @@ -9,14 +9,14 @@ impl RPCProcessor { dest: Destination, message: Vec, ) -> Result>>, RPCError> { - let app_call_q = RPCOperationAppCallQ { message }; + let app_call_q = RPCOperationAppCallQ::new(&message)?; let question = RPCQuestion::new( network_result_try!(self.get_destination_respond_to(&dest)?), RPCQuestionDetail::AppCallQ(app_call_q), ); // Send the app call question - let waitable_reply = network_result_try!(self.question(dest, question).await?); + let waitable_reply = network_result_try!(self.question(dest, question, None).await?); // Wait for reply let (msg, latency) = match self.wait_for_reply(waitable_reply).await? { @@ -25,18 +25,18 @@ impl RPCProcessor { }; // Get the right answer type - let app_call_a = match msg.operation.into_kind() { - RPCOperationKind::Answer(a) => match a.into_detail() { + let (_, _, _, kind) = msg.operation.destructure(); + let app_call_a = match kind { + RPCOperationKind::Answer(a) => match a.destructure() { RPCAnswerDetail::AppCallA(a) => a, _ => return Err(RPCError::invalid_format("not an appcall answer")), }, _ => return Err(RPCError::invalid_format("not an answer")), }; - Ok(NetworkResult::value(Answer::new( - latency, - app_call_a.message, - ))) + let a_message = app_call_a.destructure(); + + Ok(NetworkResult::value(Answer::new(latency, a_message))) } #[instrument(level = "trace", skip(self, msg), fields(msg.operation.op_id), ret, err)] @@ -45,9 +45,10 @@ impl RPCProcessor { msg: RPCMessage, ) -> Result, RPCError> { // Get the question - let app_call_q = match msg.operation.kind() { - RPCOperationKind::Question(q) => match q.detail() { - RPCQuestionDetail::AppCallQ(q) => q, + let (op_id, _, _, kind) = msg.operation.clone().destructure(); + let app_call_q = match kind { + RPCOperationKind::Question(q) => match q.destructure() { + (_, RPCQuestionDetail::AppCallQ(q)) => q, _ => panic!("not an appcall question"), }, _ => panic!("not a question"), @@ -63,16 +64,16 @@ impl RPCProcessor { .map(|nr| nr.node_ids().get(crypto_kind).unwrap().value); // Register a waiter for this app call - let id = msg.operation.op_id(); - let handle = self.unlocked_inner.waiting_app_call_table.add_op_waiter(id); + let handle = self + .unlocked_inner + .waiting_app_call_table + .add_op_waiter(op_id, ()); // Pass the call up through the update callback - let message = app_call_q.message.clone(); - (self.unlocked_inner.update_callback)(VeilidUpdate::AppCall(VeilidAppCall { - sender, - message, - id, - })); + let message_q = app_call_q.destructure(); + (self.unlocked_inner.update_callback)(VeilidUpdate::AppCall(VeilidAppCall::new( + sender, message_q, op_id, + ))); // Wait for an app call answer to come back from the app let res = self @@ -80,17 +81,17 @@ impl RPCProcessor { .waiting_app_call_table .wait_for_op(handle, self.unlocked_inner.timeout_us) .await?; - let (message, _latency) = match res { + let (message_a, _latency) = match res { TimeoutOr::Timeout => { // No message sent on timeout, but this isn't an error - log_rpc!(debug "App call timed out for id {}", id); + log_rpc!(debug "App call timed out for id {}", op_id); return Ok(NetworkResult::timeout()); } TimeoutOr::Value(v) => v, }; // Return the appcall answer - let app_call_a = RPCOperationAppCallA { message }; + let app_call_a = RPCOperationAppCallA::new(&message_a)?; // Send status answer self.answer(msg, RPCAnswer::new(RPCAnswerDetail::AppCallA(app_call_a))) diff --git a/veilid-core/src/rpc_processor/rpc_app_message.rs b/veilid-core/src/rpc_processor/rpc_app_message.rs index 0150a205..3bfbbb5e 100644 --- a/veilid-core/src/rpc_processor/rpc_app_message.rs +++ b/veilid-core/src/rpc_processor/rpc_app_message.rs @@ -22,8 +22,9 @@ impl RPCProcessor { msg: RPCMessage, ) -> Result, RPCError> { // Get the statement - let app_message = match msg.operation.into_kind() { - RPCOperationKind::Statement(s) => match s.into_detail() { + let (op_id, _, _, kind) = msg.operation.destructure(); + let app_message = match kind { + RPCOperationKind::Statement(s) => match s.destructure() { RPCStatementDetail::AppMessage(s) => s, _ => panic!("not an app message"), }, @@ -40,11 +41,10 @@ impl RPCProcessor { .map(|nr| nr.node_ids().get(crypto_kind).unwrap().value); // Pass the message up through the update callback - let message = app_message.message; - (self.unlocked_inner.update_callback)(VeilidUpdate::AppMessage(VeilidAppMessage { - sender, - message, - })); + let message = app_message.destructure(); + (self.unlocked_inner.update_callback)(VeilidUpdate::AppMessage(VeilidAppMessage::new( + sender, message, + ))); Ok(NetworkResult::value(())) } diff --git a/veilid-core/src/rpc_processor/rpc_find_node.rs b/veilid-core/src/rpc_processor/rpc_find_node.rs index 18f3053e..b96a7ee8 100644 --- a/veilid-core/src/rpc_processor/rpc_find_node.rs +++ b/veilid-core/src/rpc_processor/rpc_find_node.rs @@ -26,14 +26,14 @@ impl RPCProcessor { )); } - let find_node_q_detail = RPCQuestionDetail::FindNodeQ(RPCOperationFindNodeQ { node_id }); + let find_node_q_detail = RPCQuestionDetail::FindNodeQ(RPCOperationFindNodeQ::new(node_id)); let find_node_q = RPCQuestion::new( network_result_try!(self.get_destination_respond_to(&dest)?), find_node_q_detail, ); // Send the find_node request - let waitable_reply = network_result_try!(self.question(dest, find_node_q).await?); + let waitable_reply = network_result_try!(self.question(dest, find_node_q, None).await?); // Wait for reply let (msg, latency) = match self.wait_for_reply(waitable_reply).await? { @@ -42,8 +42,9 @@ impl RPCProcessor { }; // Get the right answer type - let find_node_a = match msg.operation.into_kind() { - RPCOperationKind::Answer(a) => match a.into_detail() { + let (_, _, _, kind) = msg.operation.destructure(); + let find_node_a = match kind { + RPCOperationKind::Answer(a) => match a.destructure() { RPCAnswerDetail::FindNodeA(a) => a, _ => return Err(RPCError::invalid_format("not a find_node answer")), }, @@ -51,7 +52,7 @@ impl RPCProcessor { }; // Verify peers are in the correct peer scope - for peer_info in &find_node_a.peers { + for peer_info in find_node_a.peers() { if !self.filter_node_info(RoutingDomain::PublicInternet, peer_info.signed_node_info()) { return Err(RPCError::invalid_format( "find_node response has invalid peer scope", @@ -59,10 +60,8 @@ impl RPCProcessor { } } - Ok(NetworkResult::value(Answer::new( - latency, - find_node_a.peers, - ))) + let peers = find_node_a.destructure(); + Ok(NetworkResult::value(Answer::new(latency, peers))) } #[instrument(level = "trace", skip(self, msg), fields(msg.operation.op_id), ret, err)] @@ -81,9 +80,10 @@ impl RPCProcessor { } // Get the question - let find_node_q = match msg.operation.kind() { - RPCOperationKind::Question(q) => match q.detail() { - RPCQuestionDetail::FindNodeQ(q) => q, + let kind = msg.operation.kind().clone(); + let find_node_q = match kind { + RPCOperationKind::Question(q) => match q.destructure() { + (_, RPCQuestionDetail::FindNodeQ(q)) => q, _ => panic!("not a status question"), }, _ => panic!("not a question"), @@ -114,9 +114,10 @@ impl RPCProcessor { c.network.dht.max_find_node_count as usize }; + let node_id = find_node_q.destructure(); let closest_nodes = routing_table.find_closest_nodes( node_count, - find_node_q.node_id, + node_id, filters, // transform |rti, entry| { @@ -125,9 +126,7 @@ impl RPCProcessor { ); // Make status answer - let find_node_a = RPCOperationFindNodeA { - peers: closest_nodes, - }; + let find_node_a = RPCOperationFindNodeA::new(closest_nodes)?; // Send status answer self.answer(msg, RPCAnswer::new(RPCAnswerDetail::FindNodeA(find_node_a))) diff --git a/veilid-core/src/rpc_processor/rpc_get_value.rs b/veilid-core/src/rpc_processor/rpc_get_value.rs index 3a697bb0..2a7689b3 100644 --- a/veilid-core/src/rpc_processor/rpc_get_value.rs +++ b/veilid-core/src/rpc_processor/rpc_get_value.rs @@ -1,6 +1,62 @@ use super::*; +use crate::storage_manager::SignedValueDescriptor; + +#[derive(Clone, Debug, PartialEq, PartialOrd, Ord, Eq, Hash)] +pub enum GetValueAnswer {} impl RPCProcessor { + // Sends a get value request and wait for response + // Can be sent via all methods including relays and routes + #[instrument(level = "trace", skip(self), ret, err)] + pub async fn rpc_call_get_value( + self, + dest: Destination, + key: TypedKey, + subkey: ValueSubkey, + last_descriptor: Option, + ) -> Result>>, RPCError> { + let get_value_q = RPCOperationGetValueQ::new(key, subkey, last_descriptor.is_none()); + let question = RPCQuestion::new( + network_result_try!(self.get_destination_respond_to(&dest)?), + RPCQuestionDetail::GetValueQ(get_value_q), + ); + let Some(vcrypto) = self.crypto.get(key.kind) else { + return Err(RPCError::internal("unsupported cryptosystem")); + }; + + // Send the app call question + let question_context = QuestionContext::GetValue(ValidateGetValueContext { + last_descriptor, + subkey, + vcrypto, + }); + + let waitable_reply = network_result_try!( + self.question(dest, question, Some(question_context)) + .await? + ); + + // Wait for reply + let (msg, latency) = match self.wait_for_reply(waitable_reply).await? { + TimeoutOr::Timeout => return Ok(NetworkResult::Timeout), + TimeoutOr::Value(v) => v, + }; + + // Get the right answer type + let (_, _, _, kind) = msg.operation.destructure(); + let app_call_a = match kind { + RPCOperationKind::Answer(a) => match a.destructure() { + RPCAnswerDetail::AppCallA(a) => a, + _ => return Err(RPCError::invalid_format("not an appcall answer")), + }, + _ => return Err(RPCError::invalid_format("not an answer")), + }; + + let a_message = app_call_a.destructure(); + + Ok(NetworkResult::value(Answer::new(latency, a_message))) + } + #[instrument(level = "trace", skip(self, msg), fields(msg.operation.op_id), ret, err)] pub(crate) async fn process_get_value_q( &self, diff --git a/veilid-core/src/rpc_processor/rpc_return_receipt.rs b/veilid-core/src/rpc_processor/rpc_return_receipt.rs index a5537369..9c2bed0d 100644 --- a/veilid-core/src/rpc_processor/rpc_return_receipt.rs +++ b/veilid-core/src/rpc_processor/rpc_return_receipt.rs @@ -26,8 +26,9 @@ impl RPCProcessor { msg: RPCMessage, ) -> Result, RPCError> { // Get the statement - let RPCOperationReturnReceipt { receipt } = match msg.operation.into_kind() { - RPCOperationKind::Statement(s) => match s.into_detail() { + let (_, _, _, kind) = msg.operation.destructure(); + let RPCOperationReturnReceipt { receipt } = match kind { + RPCOperationKind::Statement(s) => match s.destructure() { RPCStatementDetail::ReturnReceipt(s) => s, _ => panic!("not a return receipt"), }, diff --git a/veilid-core/src/rpc_processor/rpc_route.rs b/veilid-core/src/rpc_processor/rpc_route.rs index 8eb4fb6f..01e251ca 100644 --- a/veilid-core/src/rpc_processor/rpc_route.rs +++ b/veilid-core/src/rpc_processor/rpc_route.rs @@ -377,8 +377,9 @@ impl RPCProcessor { }; // Get the statement - let mut route = match msg.operation.into_kind() { - RPCOperationKind::Statement(s) => match s.into_detail() { + let (_,_,_,kind) = msg.operation.destructure(); + let mut route = match kind { + RPCOperationKind::Statement(s) => match s.destructure() { RPCStatementDetail::Route(s) => s, _ => panic!("not a route statement"), }, diff --git a/veilid-core/src/rpc_processor/rpc_signal.rs b/veilid-core/src/rpc_processor/rpc_signal.rs index d717b395..1fd6608f 100644 --- a/veilid-core/src/rpc_processor/rpc_signal.rs +++ b/veilid-core/src/rpc_processor/rpc_signal.rs @@ -44,8 +44,9 @@ impl RPCProcessor { }; // Get the statement - let signal = match msg.operation.into_kind() { - RPCOperationKind::Statement(s) => match s.into_detail() { + let (_, _, _, kind) = msg.operation.destructure(); + let signal = match kind { + RPCOperationKind::Statement(s) => match s.destructure() { RPCStatementDetail::Signal(s) => s, _ => panic!("not a signal"), }, diff --git a/veilid-core/src/rpc_processor/rpc_status.rs b/veilid-core/src/rpc_processor/rpc_status.rs index 2335100a..29b13d61 100644 --- a/veilid-core/src/rpc_processor/rpc_status.rs +++ b/veilid-core/src/rpc_processor/rpc_status.rs @@ -75,7 +75,8 @@ impl RPCProcessor { ); // Send the info request - let waitable_reply = network_result_try!(self.question(dest.clone(), question).await?); + let waitable_reply = + network_result_try!(self.question(dest.clone(), question, None).await?); // Note what kind of ping this was and to what peer scope let send_data_kind = waitable_reply.send_data_kind; diff --git a/veilid-core/src/veilid_api/mod.rs b/veilid-core/src/veilid_api/mod.rs index 766b89f4..8cc28366 100644 --- a/veilid-core/src/veilid_api/mod.rs +++ b/veilid-core/src/veilid_api/mod.rs @@ -27,11 +27,8 @@ pub use routing_table::{NodeRef, NodeRefBase}; use crate::*; use core::fmt; use core_context::{api_shutdown, VeilidCoreContext}; -use enumset::*; -use rkyv::{Archive as RkyvArchive, Deserialize as RkyvDeserialize, Serialize as RkyvSerialize}; use routing_table::{Direction, RouteSpecStore, RoutingTable}; use rpc_processor::*; -use serde::*; use storage_manager::StorageManager; ///////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/veilid-core/src/veilid_api/serialize_helpers.rs b/veilid-core/src/veilid_api/serialize_helpers.rs index 91a3b283..e0ee3788 100644 --- a/veilid-core/src/veilid_api/serialize_helpers.rs +++ b/veilid-core/src/veilid_api/serialize_helpers.rs @@ -1,9 +1,6 @@ use super::*; -pub use bytecheck::CheckBytes; + use core::fmt::Debug; -use rkyv::Archive as RkyvArchive; -use rkyv::Deserialize as RkyvDeserialize; -use rkyv::Serialize as RkyvSerialize; // Don't trace these functions as they are used in the transfer of API logs, which will recurse! @@ -146,7 +143,7 @@ pub fn from_rkyv(v: Vec) -> EyreResult where T: RkyvArchive, ::Archived: - for<'t> bytecheck::CheckBytes>, + for<'t> CheckBytes>, ::Archived: rkyv::Deserialize, { diff --git a/veilid-core/src/veilid_api/types/app_message_call.rs b/veilid-core/src/veilid_api/types/app_message_call.rs index f3c24f3a..42035271 100644 --- a/veilid-core/src/veilid_api/types/app_message_call.rs +++ b/veilid-core/src/veilid_api/types/app_message_call.rs @@ -14,6 +14,19 @@ pub struct VeilidAppMessage { pub message: Vec, } +impl VeilidAppMessage { + pub fn new(sender: Option, message: Vec) -> Self { + Self { sender, message } + } + + pub fn sender(&self) -> Option<&PublicKey> { + self.sender.as_ref() + } + pub fn message(&self) -> &[u8] { + &self.message + } +} + /// Direct question blob passed to hosting application for processing to send an eventual AppReply #[derive( Debug, Clone, PartialEq, Eq, Serialize, Deserialize, RkyvArchive, RkyvSerialize, RkyvDeserialize, @@ -22,11 +35,31 @@ pub struct VeilidAppMessage { pub struct VeilidAppCall { /// Some(sender) if the request was sent directly, None if received via a private/safety route #[serde(with = "opt_json_as_string")] - pub sender: Option, + sender: Option, /// The content of the request to deliver to the application #[serde(with = "json_as_base64")] - pub message: Vec, + message: Vec, /// The id to reply to #[serde(with = "json_as_string")] - pub id: OperationId, + id: OperationId, +} + +impl VeilidAppCall { + pub fn new(sender: Option, message: Vec, id: OperationId) -> Self { + Self { + sender, + message, + id, + } + } + + pub fn sender(&self) -> Option<&PublicKey> { + self.sender.as_ref() + } + pub fn message(&self) -> &[u8] { + &self.message + } + pub fn id(&self) -> OperationId { + self.id + } }