diff --git a/CHANGELOG.md b/CHANGELOG.md index e61c202..a160028 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,13 +2,18 @@ All notable changes to this project will be documented in this file. +## [1.0.4] - 2023-07-07 + +### Changed +- Fix performance problems. + ## [1.0.3] - 2023-07-03 ### Changed - Add installer packager. - Add consistent global snapshot support. - Fix init script bugs. -- Update dependencies versions +- Update dependencies versions. ## [1.0.2] - 2023-05-26 diff --git a/Cargo.lock b/Cargo.lock index 80504e9..3656e48 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -23,7 +23,7 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "cipher", "cpufeatures", ] @@ -36,7 +36,7 @@ checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ "getrandom", "once_cell", - "version_check", + "version_check 0.9.4", ] [[package]] @@ -45,10 +45,10 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "getrandom", "once_cell", - "version_check", + "version_check 0.9.4", ] [[package]] @@ -135,7 +135,7 @@ checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" dependencies = [ "async-stream-impl", "futures-core", - "pin-project-lite", + "pin-project-lite 0.2.10", ] [[package]] @@ -160,6 +160,15 @@ dependencies = [ "syn 2.0.23", ] +[[package]] +name = "autocfg" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dde43e75fd43e8a1bf86103336bc699aa8d17ad1be60c76c0bdfd4828e19b78" +dependencies = [ + "autocfg 1.1.0", +] + [[package]] name = "autocfg" version = "1.1.0" @@ -174,13 +183,32 @@ checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" dependencies = [ "addr2line", "cc", - "cfg-if", + "cfg-if 1.0.0", "libc", "miniz_oxide", "object", "rustc-demangle", ] +[[package]] +name = "base64" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" +dependencies = [ + "byteorder", + "safemem", +] + +[[package]] +name = "base64" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" +dependencies = [ + "byteorder", +] + [[package]] name = "base64" version = "0.13.1" @@ -223,13 +251,34 @@ dependencies = [ "wyz", ] +[[package]] +name = "block-buffer" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" +dependencies = [ + "block-padding", + "byte-tools", + "byteorder", + "generic-array 0.12.4", +] + [[package]] name = "block-buffer" version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ - "generic-array", + "generic-array 0.14.7", +] + +[[package]] +name = "block-padding" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" +dependencies = [ + "byte-tools", ] [[package]] @@ -245,7 +294,7 @@ dependencies = [ "indexmap 1.9.3", "js-sys", "lazy_static", - "rand", + "rand 0.8.5", "serde", "serde_bytes", "serde_json", @@ -259,12 +308,34 @@ version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +[[package]] +name = "byte-tools" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" + [[package]] name = "byteorder" version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +[[package]] +name = "bytes" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" +dependencies = [ + "byteorder", + "iovec", +] + +[[package]] +name = "bytes" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" + [[package]] name = "bytes" version = "1.4.0" @@ -311,6 +382,12 @@ dependencies = [ "jobserver", ] +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + [[package]] name = "cfg-if" version = "1.0.0" @@ -329,7 +406,7 @@ dependencies = [ "num-traits", "time 0.1.45", "wasm-bindgen", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -383,6 +460,15 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" +[[package]] +name = "cloudabi" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" +dependencies = [ + "bitflags 1.3.2", +] + [[package]] name = "codepage" version = "0.1.1" @@ -474,7 +560,55 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", +] + +[[package]] +name = "crossbeam-deque" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20ff29ded3204c5106278a81a38f4b482636ed4fa1e6cfbeef193291beb29ed" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils 0.7.2", + "maybe-uninit", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" +dependencies = [ + "autocfg 1.1.0", + "cfg-if 0.1.10", + "crossbeam-utils 0.7.2", + "lazy_static", + "maybe-uninit", + "memoffset", + "scopeguard", +] + +[[package]] +name = "crossbeam-queue" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570" +dependencies = [ + "cfg-if 0.1.10", + "crossbeam-utils 0.7.2", + "maybe-uninit", +] + +[[package]] +name = "crossbeam-utils" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" +dependencies = [ + "autocfg 1.1.0", + "cfg-if 0.1.10", + "lazy_static", ] [[package]] @@ -483,7 +617,7 @@ version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", ] [[package]] @@ -492,7 +626,7 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ - "generic-array", + "generic-array 0.14.7", "typenum", ] @@ -540,12 +674,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "data-encoding" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" - [[package]] name = "der" version = "0.7.7" @@ -577,7 +705,7 @@ dependencies = [ "convert_case", "proc-macro2", "quote", - "rustc_version", + "rustc_version 0.4.0", "syn 1.0.109", ] @@ -587,13 +715,22 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c877555693c14d2f84191cfd3ad8582790fc52b5e2274b40b59cf5f5cea25c7" +[[package]] +name = "digest" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" +dependencies = [ + "generic-array 0.12.4", +] + [[package]] name = "digest" version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "block-buffer", + "block-buffer 0.10.4", "const-oid", "crypto-common", "subtle", @@ -669,7 +806,7 @@ version = "0.8.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", ] [[package]] @@ -699,6 +836,12 @@ dependencies = [ "libc", ] +[[package]] +name = "fake-simd" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" + [[package]] name = "fastrand" version = "1.9.0" @@ -768,15 +911,43 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" dependencies = [ - "percent-encoding", + "percent-encoding 2.3.0", +] + +[[package]] +name = "fuchsia-cprng" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" + +[[package]] +name = "fuchsia-zircon" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" +dependencies = [ + "bitflags 1.3.2", + "fuchsia-zircon-sys", ] +[[package]] +name = "fuchsia-zircon-sys" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" + [[package]] name = "funty" version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" +[[package]] +name = "futures" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" + [[package]] name = "futures" version = "0.3.28" @@ -861,11 +1032,20 @@ dependencies = [ "futures-sink", "futures-task", "memchr", - "pin-project-lite", + "pin-project-lite 0.2.10", "pin-utils", "slab", ] +[[package]] +name = "generic-array" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" +dependencies = [ + "typenum", +] + [[package]] name = "generic-array" version = "0.14.7" @@ -873,7 +1053,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", - "version_check", + "version_check 0.9.4", ] [[package]] @@ -891,7 +1071,7 @@ version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "libc", "wasi 0.11.0+wasi-snapshot-preview1", ] @@ -908,13 +1088,33 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +[[package]] +name = "h2" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e4728fd124914ad25e99e3d15a9361a879f6620f63cb56bbb08f95abb97a535" +dependencies = [ + "bytes 0.5.6", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap 1.9.3", + "slab", + "tokio 0.2.25", + "tokio-util 0.3.1", + "tracing", + "tracing-futures", +] + [[package]] name = "h2" version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049" dependencies = [ - "bytes", + "bytes 1.4.0", "fnv", "futures-core", "futures-sink", @@ -922,8 +1122,8 @@ dependencies = [ "http", "indexmap 1.9.3", "slab", - "tokio", - "tokio-util", + "tokio 1.29.1", + "tokio-util 0.7.8", "tracing", ] @@ -963,7 +1163,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest", + "digest 0.10.7", ] [[package]] @@ -972,9 +1172,19 @@ version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" dependencies = [ - "bytes", + "bytes 1.4.0", "fnv", - "itoa", + "itoa 1.0.7", +] + +[[package]] +name = "http-body" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b" +dependencies = [ + "bytes 0.5.6", + "http", ] [[package]] @@ -983,9 +1193,9 @@ version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" dependencies = [ - "bytes", + "bytes 1.4.0", "http", - "pin-project-lite", + "pin-project-lite 0.2.10", ] [[package]] @@ -994,6 +1204,12 @@ version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +[[package]] +name = "httpdate" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47" + [[package]] name = "httpdate" version = "1.0.2" @@ -1006,40 +1222,96 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" +[[package]] +name = "hyper" +version = "0.10.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a0652d9a2609a968c14be1a9ea00bf4b1d64e2e1f53a1b51b6fff3a6e829273" +dependencies = [ + "base64 0.9.3", + "httparse", + "language-tags", + "log 0.3.9", + "mime 0.2.6", + "num_cpus", + "time 0.1.45", + "traitobject", + "typeable", + "unicase 1.4.2", + "url 1.7.2", +] + +[[package]] +name = "hyper" +version = "0.13.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a6f157065790a3ed2f88679250419b5cdd96e714a0d65f7797fd337186e96bb" +dependencies = [ + "bytes 0.5.6", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.2.7", + "http", + "http-body 0.3.1", + "httparse", + "httpdate 0.3.2", + "itoa 0.4.8", + "pin-project", + "socket2 0.3.19", + "tokio 0.2.25", + "tower-service", + "tracing", + "want", +] + [[package]] name = "hyper" version = "0.14.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" dependencies = [ - "bytes", + "bytes 1.4.0", "futures-channel", "futures-core", "futures-util", - "h2", + "h2 0.3.20", "http", - "http-body", + "http-body 0.4.5", "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2", - "tokio", + "httpdate 1.0.2", + "itoa 1.0.7", + "pin-project-lite 0.2.10", + "socket2 0.4.9", + "tokio 1.29.1", "tower-service", "tracing", "want", ] +[[package]] +name = "hyper-tls" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d979acc56dcb5b8dddba3917601745e877576475aa046df3226eabdecef78eed" +dependencies = [ + "bytes 0.5.6", + "hyper 0.13.10", + "native-tls", + "tokio 0.2.25", + "tokio-tls 0.3.1", +] + [[package]] name = "hyper-tls" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ - "bytes", - "hyper", + "bytes 1.4.0", + "hyper 0.14.27", "native-tls", - "tokio", + "tokio 1.29.1", "tokio-native-tls", ] @@ -1072,6 +1344,17 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" +[[package]] +name = "idna" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + [[package]] name = "idna" version = "0.4.0" @@ -1088,7 +1371,7 @@ version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ - "autocfg", + "autocfg 1.1.0", "hashbrown 0.12.3", ] @@ -1108,7 +1391,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" dependencies = [ - "generic-array", + "generic-array 0.14.7", ] [[package]] @@ -1117,7 +1400,7 @@ version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", ] [[package]] @@ -1141,6 +1424,15 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "iovec" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" +dependencies = [ + "libc", +] + [[package]] name = "ipnet" version = "2.8.0" @@ -1158,6 +1450,12 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "itoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" + [[package]] name = "itoa" version = "1.0.7" @@ -1182,6 +1480,22 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "kernel32-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] + +[[package]] +name = "language-tags" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" + [[package]] name = "lazy_static" version = "1.4.0" @@ -1221,16 +1535,34 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0" +[[package]] +name = "lock_api" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75" +dependencies = [ + "scopeguard", +] + [[package]] name = "lock_api" version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" dependencies = [ - "autocfg", + "autocfg 1.1.0", "scopeguard", ] +[[package]] +name = "log" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" +dependencies = [ + "log 0.4.19", +] + [[package]] name = "log" version = "0.4.19" @@ -1259,9 +1591,9 @@ dependencies = [ "fnv", "humantime", "libc", - "log", + "log 0.4.19", "log-mdc", - "parking_lot", + "parking_lot 0.12.1", "serde", "serde-value", "serde_json", @@ -1269,7 +1601,7 @@ dependencies = [ "thiserror", "thread-id", "typemap-ors", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -1290,6 +1622,18 @@ dependencies = [ "libc", ] +[[package]] +name = "matches" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" + +[[package]] +name = "maybe-uninit" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" + [[package]] name = "md5" version = "0.7.0" @@ -1303,26 +1647,73 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] -name = "mime" -version = "0.3.17" +name = "memoffset" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa" +dependencies = [ + "autocfg 1.1.0", +] [[package]] -name = "minimal-lexical" -version = "0.2.1" +name = "mime" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" +checksum = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0" +dependencies = [ + "log 0.3.9", +] [[package]] -name = "miniz_oxide" -version = "0.7.1" +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +dependencies = [ + "mime 0.3.17", + "unicase 2.6.0", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" dependencies = [ "adler", ] +[[package]] +name = "mio" +version = "0.6.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" +dependencies = [ + "cfg-if 0.1.10", + "fuchsia-zircon", + "fuchsia-zircon-sys", + "iovec", + "kernel32-sys", + "libc", + "log 0.4.19", + "miow 0.2.2", + "net2", + "slab", + "winapi 0.2.8", +] + [[package]] name = "mio" version = "0.8.8" @@ -1334,6 +1725,50 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "mio-named-pipes" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0840c1c50fd55e521b247f949c241c9997709f23bd7f023b9762cd561e935656" +dependencies = [ + "log 0.4.19", + "mio 0.6.23", + "miow 0.3.7", + "winapi 0.3.9", +] + +[[package]] +name = "mio-uds" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afcb699eb26d4332647cc848492bbc15eafb26f08d0304550d5aa1f612e066f0" +dependencies = [ + "iovec", + "libc", + "mio 0.6.23", +] + +[[package]] +name = "miow" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" +dependencies = [ + "kernel32-sys", + "net2", + "winapi 0.2.8", + "ws2_32-sys", +] + +[[package]] +name = "miow" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" +dependencies = [ + "winapi 0.3.9", +] + [[package]] name = "msdos_time" version = "0.1.6" @@ -1341,7 +1776,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aad9dfe950c057b1bfe9c1f2aa51583a8468ef2a5baba2ebbe06d775efeb7729" dependencies = [ "time 0.1.45", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -1352,7 +1787,7 @@ checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" dependencies = [ "lazy_static", "libc", - "log", + "log 0.4.19", "openssl", "openssl-probe", "openssl-sys", @@ -1362,6 +1797,17 @@ dependencies = [ "tempfile", ] +[[package]] +name = "net2" +version = "0.2.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b13b648036a2339d06de780866fbdfda0dde886de7b3af2ddeba8b14f4ee34ac" +dependencies = [ + "cfg-if 0.1.10", + "libc", + "winapi 0.3.9", +] + [[package]] name = "nom" version = "7.1.3" @@ -1378,7 +1824,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" dependencies = [ - "winapi", + "winapi 0.3.9", ] [[package]] @@ -1393,8 +1839,8 @@ dependencies = [ "num-integer", "num-iter", "num-traits", - "rand", - "smallvec", + "rand 0.8.5", + "smallvec 1.10.0", "zeroize", ] @@ -1404,7 +1850,7 @@ version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" dependencies = [ - "autocfg", + "autocfg 1.1.0", "num-traits", ] @@ -1414,7 +1860,7 @@ version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" dependencies = [ - "autocfg", + "autocfg 1.1.0", "num-integer", "num-traits", ] @@ -1425,7 +1871,7 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" dependencies = [ - "autocfg", + "autocfg 1.1.0", "libm", ] @@ -1464,6 +1910,12 @@ version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +[[package]] +name = "opaque-debug" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" + [[package]] name = "openssl" version = "0.10.55" @@ -1471,7 +1923,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "345df152bc43501c5eb9e4654ff05f794effb78d4efe3d53abc158baddc0703d" dependencies = [ "bitflags 1.3.2", - "cfg-if", + "cfg-if 1.0.0", "foreign-types", "libc", "once_cell", @@ -1527,14 +1979,40 @@ dependencies = [ "num-traits", ] +[[package]] +name = "parking_lot" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" +dependencies = [ + "lock_api 0.3.4", + "parking_lot_core 0.6.3", + "rustc_version 0.2.3", +] + [[package]] name = "parking_lot" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ - "lock_api", - "parking_lot_core", + "lock_api 0.4.10", + "parking_lot_core 0.9.8", +] + +[[package]] +name = "parking_lot_core" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66b810a62be75176a80873726630147a5ca780cd33921e0b5709033e66b0a" +dependencies = [ + "cfg-if 0.1.10", + "cloudabi", + "libc", + "redox_syscall 0.1.57", + "rustc_version 0.2.3", + "smallvec 0.6.14", + "winapi 0.3.9", ] [[package]] @@ -1543,10 +2021,10 @@ version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "libc", "redox_syscall 0.3.5", - "smallvec", + "smallvec 1.10.0", "windows-targets", ] @@ -1557,7 +2035,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" dependencies = [ "base64ct", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -1573,7 +2051,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" dependencies = [ - "digest", + "digest 0.10.7", "hmac", "password-hash", "sha2", @@ -1588,12 +2066,44 @@ dependencies = [ "base64ct", ] +[[package]] +name = "percent-encoding" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" + [[package]] name = "percent-encoding" version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +[[package]] +name = "pin-project" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "030ad2bc4db10a8944cb0d837f158bdfec4d4a4873ab701a95046770d11f8842" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec2e072ecce94ec471b13398d5402c188e76ac03cf74dd1a975161b23a3f6d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.23", +] + +[[package]] +name = "pin-project-lite" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777" + [[package]] name = "pin-project-lite" version = "0.2.10" @@ -1684,6 +2194,25 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" +[[package]] +name = "rand" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" +dependencies = [ + "autocfg 0.1.8", + "libc", + "rand_chacha 0.1.1", + "rand_core 0.4.2", + "rand_hc", + "rand_isaac", + "rand_jitter", + "rand_os", + "rand_pcg", + "rand_xorshift", + "winapi 0.3.9", +] + [[package]] name = "rand" version = "0.8.5" @@ -1691,8 +2220,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" +dependencies = [ + "autocfg 0.1.8", + "rand_core 0.3.1", ] [[package]] @@ -1702,9 +2241,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", ] +[[package]] +name = "rand_core" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" +dependencies = [ + "rand_core 0.4.2", +] + +[[package]] +name = "rand_core" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" + [[package]] name = "rand_core" version = "0.6.4" @@ -1714,6 +2268,83 @@ dependencies = [ "getrandom", ] +[[package]] +name = "rand_hc" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" +dependencies = [ + "rand_core 0.3.1", +] + +[[package]] +name = "rand_isaac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" +dependencies = [ + "rand_core 0.3.1", +] + +[[package]] +name = "rand_jitter" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" +dependencies = [ + "libc", + "rand_core 0.4.2", + "winapi 0.3.9", +] + +[[package]] +name = "rand_os" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" +dependencies = [ + "cloudabi", + "fuchsia-cprng", + "libc", + "rand_core 0.4.2", + "rdrand", + "winapi 0.3.9", +] + +[[package]] +name = "rand_pcg" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" +dependencies = [ + "autocfg 0.1.8", + "rand_core 0.4.2", +] + +[[package]] +name = "rand_xorshift" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" +dependencies = [ + "rand_core 0.3.1", +] + +[[package]] +name = "rdrand" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" +dependencies = [ + "rand_core 0.3.1", +] + +[[package]] +name = "redox_syscall" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" + [[package]] name = "redox_syscall" version = "0.2.16" @@ -1732,6 +2363,42 @@ dependencies = [ "bitflags 1.3.2", ] +[[package]] +name = "reqwest" +version = "0.10.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0718f81a8e14c4dbb3b34cf23dc6aaf9ab8a0dfec160c534b3dbca1aaa21f47c" +dependencies = [ + "base64 0.13.1", + "bytes 0.5.6", + "encoding_rs", + "futures-core", + "futures-util", + "http", + "http-body 0.3.1", + "hyper 0.13.10", + "hyper-tls 0.4.3", + "ipnet", + "js-sys", + "lazy_static", + "log 0.4.19", + "mime 0.3.17", + "mime_guess", + "native-tls", + "percent-encoding 2.3.0", + "pin-project-lite 0.2.10", + "serde", + "serde_json", + "serde_urlencoded", + "tokio 0.2.25", + "tokio-tls 0.3.1", + "url 2.4.0", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg 0.7.0", +] + [[package]] name = "reqwest" version = "0.11.18" @@ -1739,36 +2406,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55" dependencies = [ "base64 0.21.2", - "bytes", + "bytes 1.4.0", "encoding_rs", "futures-core", "futures-util", - "h2", + "h2 0.3.20", "http", - "http-body", - "hyper", - "hyper-tls", + "http-body 0.4.5", + "hyper 0.14.27", + "hyper-tls 0.5.0", "ipnet", "js-sys", - "log", - "mime", + "log 0.4.19", + "mime 0.3.17", "native-tls", "once_cell", - "percent-encoding", - "pin-project-lite", + "percent-encoding 2.3.0", + "pin-project-lite 0.2.10", "serde", "serde_json", "serde_urlencoded", - "tokio", + "tokio 1.29.1", "tokio-native-tls", - "tokio-util", + "tokio-util 0.7.8", "tower-service", - "url", + "url 2.4.0", "wasm-bindgen", "wasm-bindgen-futures", "wasm-streams", "web-sys", - "winreg", + "winreg 0.10.1", ] [[package]] @@ -1785,14 +2452,14 @@ checksum = "6ab43bb47d23c1a631b4b680199a45255dce26fa9ab2fa902581f624ff13e6a8" dependencies = [ "byteorder", "const-oid", - "digest", + "digest 0.10.7", "num-bigint-dig", "num-integer", "num-iter", "num-traits", "pkcs1", "pkcs8", - "rand_core", + "rand_core 0.6.4", "signature", "spki", "subtle", @@ -1805,13 +2472,22 @@ version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver 0.9.0", +] + [[package]] name = "rustc_version" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver", + "semver 1.0.17", ] [[package]] @@ -1847,6 +2523,12 @@ version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" +[[package]] +name = "safemem" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" + [[package]] name = "schannel" version = "0.1.21" @@ -1885,12 +2567,27 @@ dependencies = [ "libc", ] +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + [[package]] name = "semver" version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + [[package]] name = "serde" version = "1.0.164" @@ -1937,7 +2634,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46266871c240a00b8f503b877622fe33430b3c7d963bdc0f2adc511e54a1eae3" dependencies = [ "indexmap 2.0.0", - "itoa", + "itoa 1.0.7", "ryu", "serde", ] @@ -1949,7 +2646,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ "form_urlencoded", - "itoa", + "itoa 1.0.7", "ryu", "serde", ] @@ -1966,15 +2663,27 @@ dependencies = [ "yaml-rust", ] +[[package]] +name = "sha-1" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df" +dependencies = [ + "block-buffer 0.7.3", + "digest 0.8.1", + "fake-simd", + "opaque-debug", +] + [[package]] name = "sha1" version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "cpufeatures", - "digest", + "digest 0.10.7", ] [[package]] @@ -1983,9 +2692,9 @@ version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "cpufeatures", - "digest", + "digest 0.10.7", ] [[package]] @@ -2003,8 +2712,8 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500" dependencies = [ - "digest", - "rand_core", + "digest 0.10.7", + "rand_core 0.6.4", ] [[package]] @@ -2013,7 +2722,16 @@ version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" dependencies = [ - "autocfg", + "autocfg 1.1.0", +] + +[[package]] +name = "smallvec" +version = "0.6.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97fcaeba89edba30f044a10c6a3cc39df9c3f17d7cd829dd1446cab35f890e0" +dependencies = [ + "maybe-uninit", ] [[package]] @@ -2038,6 +2756,17 @@ dependencies = [ "serde_json", ] +[[package]] +name = "socket2" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "winapi 0.3.9", +] + [[package]] name = "socket2" version = "0.4.9" @@ -2045,7 +2774,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" dependencies = [ "libc", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -2106,13 +2835,13 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tat_agent" -version = "1.0.3" +version = "1.0.4" dependencies = [ "async-trait", "base64 0.21.2", "bson", - "bytes", - "cfg-if", + "bytes 0.5.6", + "cfg-if 1.0.0", "chrono", "clap", "codepage-strings", @@ -2120,12 +2849,13 @@ dependencies = [ "derive_more", "encoding", "faux", - "futures", + "futures 0.1.31", + "futures 0.3.28", "glob", "hmac", - "hyper", + "hyper 0.14.27", "libc", - "log", + "log 0.4.19", "log4rs", "md5", "nom", @@ -2133,8 +2863,9 @@ dependencies = [ "once_cell", "openssl", "procfs", - "rand", - "reqwest", + "rand 0.8.5", + "reqwest 0.10.10", + "reqwest 0.11.18", "ringbuffer", "rsa", "serde", @@ -2143,16 +2874,16 @@ dependencies = [ "sha1", "smbios-lib", "time 0.3.22", - "tokio", - "tokio-stream", + "tokio 0.1.22", + "tokio 0.2.25", "tokio-test", - "tokio-tungstenite", "unix_mode", "unzip", - "url", + "url 2.4.0", "urlencoding", "users", - "winapi", + "websocket", + "winapi 0.3.9", "zip-extensions", "zip-extract", ] @@ -2163,8 +2894,8 @@ version = "3.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6" dependencies = [ - "autocfg", - "cfg-if", + "autocfg 1.1.0", + "cfg-if 1.0.0", "fastrand", "redox_syscall 0.3.5", "rustix 0.37.22", @@ -2199,7 +2930,7 @@ checksum = "3ee93aa2b8331c0fec9091548843f2c90019571814057da3b783f9de09349d73" dependencies = [ "libc", "redox_syscall 0.2.16", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -2210,7 +2941,7 @@ checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" dependencies = [ "libc", "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -2219,7 +2950,7 @@ version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea9e1b3cf1243ae005d9e74085d4d542f3125458f3a81af210d901dcd7411efd" dependencies = [ - "itoa", + "itoa 1.0.7", "serde", "time-core", "time-macros", @@ -2255,34 +2986,133 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" +[[package]] +name = "tokio" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" +dependencies = [ + "bytes 0.4.12", + "futures 0.1.31", + "mio 0.6.23", + "num_cpus", + "tokio-codec", + "tokio-current-thread", + "tokio-executor", + "tokio-fs", + "tokio-io", + "tokio-reactor", + "tokio-sync", + "tokio-tcp", + "tokio-threadpool", + "tokio-timer", + "tokio-udp", + "tokio-uds", +] + +[[package]] +name = "tokio" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6703a273949a90131b290be1fe7b039d0fc884aa1935860dfcbe056f28cd8092" +dependencies = [ + "bytes 0.5.6", + "fnv", + "futures-core", + "iovec", + "lazy_static", + "libc", + "memchr", + "mio 0.6.23", + "mio-named-pipes", + "mio-uds", + "num_cpus", + "pin-project-lite 0.1.12", + "signal-hook-registry", + "slab", + "tokio-macros", + "winapi 0.3.9", +] + [[package]] name = "tokio" version = "1.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "532826ff75199d5833b9d2c5fe410f29235e25704ee5f0ef599fb51c21f4a4da" dependencies = [ - "autocfg", + "autocfg 1.1.0", "backtrace", - "bytes", + "bytes 1.4.0", "libc", - "mio", + "mio 0.8.8", "num_cpus", - "pin-project-lite", - "signal-hook-registry", - "socket2", - "tokio-macros", + "pin-project-lite 0.2.10", + "socket2 0.4.9", "windows-sys 0.48.0", ] +[[package]] +name = "tokio-codec" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25b2998660ba0e70d18684de5d06b70b70a3a747469af9dea7618cc59e75976b" +dependencies = [ + "bytes 0.4.12", + "futures 0.1.31", + "tokio-io", +] + +[[package]] +name = "tokio-current-thread" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1de0e32a83f131e002238d7ccde18211c0a5397f60cbfffcb112868c2e0e20e" +dependencies = [ + "futures 0.1.31", + "tokio-executor", +] + +[[package]] +name = "tokio-executor" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb2d1b8f4548dbf5e1f7818512e9c406860678f29c300cdf0ebac72d1a3a1671" +dependencies = [ + "crossbeam-utils 0.7.2", + "futures 0.1.31", +] + +[[package]] +name = "tokio-fs" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "297a1206e0ca6302a0eed35b700d292b275256f596e2f3fea7729d5e629b6ff4" +dependencies = [ + "futures 0.1.31", + "tokio-io", + "tokio-threadpool", +] + +[[package]] +name = "tokio-io" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674" +dependencies = [ + "bytes 0.4.12", + "futures 0.1.31", + "log 0.4.19", +] + [[package]] name = "tokio-macros" -version = "2.1.0" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +checksum = "e44da00bfc73a25f814cd8d7e57a68a5c31b74b3152a0a1d1f590c97ed06265a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.23", + "syn 1.0.109", ] [[package]] @@ -2292,7 +3122,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" dependencies = [ "native-tls", - "tokio", + "tokio 1.29.1", +] + +[[package]] +name = "tokio-reactor" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09bc590ec4ba8ba87652da2068d150dcada2cfa2e07faae270a5e0409aa51351" +dependencies = [ + "crossbeam-utils 0.7.2", + "futures 0.1.31", + "lazy_static", + "log 0.4.19", + "mio 0.6.23", + "num_cpus", + "parking_lot 0.9.0", + "slab", + "tokio-executor", + "tokio-io", + "tokio-sync", ] [[package]] @@ -2302,8 +3151,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" dependencies = [ "futures-core", - "pin-project-lite", - "tokio", + "pin-project-lite 0.2.10", + "tokio 1.29.1", +] + +[[package]] +name = "tokio-sync" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edfe50152bc8164fcc456dab7891fa9bf8beaf01c5ee7e1dd43a397c3cf87dee" +dependencies = [ + "fnv", + "futures 0.1.31", +] + +[[package]] +name = "tokio-tcp" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98df18ed66e3b72e742f185882a9e201892407957e45fbff8da17ae7a7c51f72" +dependencies = [ + "bytes 0.4.12", + "futures 0.1.31", + "iovec", + "mio 0.6.23", + "tokio-io", + "tokio-reactor", ] [[package]] @@ -2313,24 +3186,107 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53474327ae5e166530d17f2d956afcb4f8a004de581b3cae10f12006bc8163e3" dependencies = [ "async-stream", - "bytes", + "bytes 1.4.0", "futures-core", - "tokio", + "tokio 1.29.1", "tokio-stream", ] [[package]] -name = "tokio-tungstenite" -version = "0.19.0" +name = "tokio-threadpool" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec509ac96e9a0c43427c74f003127d953a265737636129424288d27cb5c4b12c" +checksum = "df720b6581784c118f0eb4310796b12b1d242a7eb95f716a8367855325c25f89" dependencies = [ - "futures-util", - "log", + "crossbeam-deque", + "crossbeam-queue", + "crossbeam-utils 0.7.2", + "futures 0.1.31", + "lazy_static", + "log 0.4.19", + "num_cpus", + "slab", + "tokio-executor", +] + +[[package]] +name = "tokio-timer" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93044f2d313c95ff1cb7809ce9a7a05735b012288a888b62d4434fd58c94f296" +dependencies = [ + "crossbeam-utils 0.7.2", + "futures 0.1.31", + "slab", + "tokio-executor", +] + +[[package]] +name = "tokio-tls" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "354b8cd83825b3c20217a9dc174d6a0c67441a2fae5c41bcb1ea6679f6ae0f7c" +dependencies = [ + "futures 0.1.31", "native-tls", - "tokio", - "tokio-native-tls", - "tungstenite", + "tokio-io", +] + +[[package]] +name = "tokio-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a70f4fcd7b3b24fb194f837560168208f669ca8cb70d0c4b862944452396343" +dependencies = [ + "native-tls", + "tokio 0.2.25", +] + +[[package]] +name = "tokio-udp" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2a0b10e610b39c38b031a2fcab08e4b82f16ece36504988dcbd81dbba650d82" +dependencies = [ + "bytes 0.4.12", + "futures 0.1.31", + "log 0.4.19", + "mio 0.6.23", + "tokio-codec", + "tokio-io", + "tokio-reactor", +] + +[[package]] +name = "tokio-uds" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab57a4ac4111c8c9dbcf70779f6fc8bc35ae4b2454809febac840ad19bd7e4e0" +dependencies = [ + "bytes 0.4.12", + "futures 0.1.31", + "iovec", + "libc", + "log 0.4.19", + "mio 0.6.23", + "mio-uds", + "tokio-codec", + "tokio-io", + "tokio-reactor", +] + +[[package]] +name = "tokio-util" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be8242891f2b6cbef26a2d7e8605133c2c554cd35b3e4948ea892d6d68436499" +dependencies = [ + "bytes 0.5.6", + "futures-core", + "futures-sink", + "log 0.4.19", + "pin-project-lite 0.1.12", + "tokio 0.2.25", ] [[package]] @@ -2339,11 +3295,11 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" dependencies = [ - "bytes", + "bytes 1.4.0", "futures-core", "futures-sink", - "pin-project-lite", - "tokio", + "pin-project-lite 0.2.10", + "tokio 1.29.1", "tracing", ] @@ -2359,8 +3315,9 @@ version = "0.1.37" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" dependencies = [ - "cfg-if", - "pin-project-lite", + "cfg-if 1.0.0", + "log 0.4.19", + "pin-project-lite 0.2.10", "tracing-core", ] @@ -2373,6 +3330,22 @@ dependencies = [ "once_cell", ] +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project", + "tracing", +] + +[[package]] +name = "traitobject" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079" + [[package]] name = "transformation-pipeline" version = "0.1.0" @@ -2386,24 +3359,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" [[package]] -name = "tungstenite" -version = "0.19.0" +name = "typeable" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15fba1a6d6bb030745759a9a2a588bfe8490fc8b4751a277db3a0be1c9ebbf67" -dependencies = [ - "byteorder", - "bytes", - "data-encoding", - "http", - "httparse", - "log", - "native-tls", - "rand", - "sha1", - "thiserror", - "url", - "utf-8", -] +checksum = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887" [[package]] name = "typemap-ors" @@ -2420,6 +3379,24 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +[[package]] +name = "unicase" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" +dependencies = [ + "version_check 0.1.5", +] + +[[package]] +name = "unicase" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +dependencies = [ + "version_check 0.9.4", +] + [[package]] name = "unicode-bidi" version = "0.3.13" @@ -2473,6 +3450,17 @@ dependencies = [ "zip 0.2.8", ] +[[package]] +name = "url" +version = "1.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" +dependencies = [ + "idna 0.1.5", + "matches", + "percent-encoding 1.0.1", +] + [[package]] name = "url" version = "2.4.0" @@ -2480,8 +3468,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" dependencies = [ "form_urlencoded", - "idna", - "percent-encoding", + "idna 0.4.0", + "percent-encoding 2.3.0", ] [[package]] @@ -2497,15 +3485,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24cc0f6d6f267b73e5a2cadf007ba8f9bc39c6a6f9666f8cf25ea809a153b032" dependencies = [ "libc", - "log", + "log 0.4.19", ] -[[package]] -name = "utf-8" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" - [[package]] name = "utf8parse" version = "0.2.1" @@ -2537,6 +3519,12 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" +[[package]] +name = "version_check" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" + [[package]] name = "version_check" version = "0.9.4" @@ -2570,7 +3558,9 @@ version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", + "serde", + "serde_json", "wasm-bindgen-macro", ] @@ -2581,7 +3571,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" dependencies = [ "bumpalo", - "log", + "log 0.4.19", "once_cell", "proc-macro2", "quote", @@ -2595,7 +3585,7 @@ version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "js-sys", "wasm-bindgen", "web-sys", @@ -2653,6 +3643,53 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "websocket" +version = "0.26.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92aacab060eea423e4036820ddd28f3f9003b2c4d8048cbda985e5a14e18038d" +dependencies = [ + "bytes 0.4.12", + "futures 0.1.31", + "hyper 0.10.16", + "native-tls", + "rand 0.6.5", + "tokio-codec", + "tokio-io", + "tokio-reactor", + "tokio-tcp", + "tokio-tls 0.2.1", + "unicase 1.4.2", + "url 1.7.2", + "websocket-base", +] + +[[package]] +name = "websocket-base" +version = "0.26.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49aec794b07318993d1db16156d5a9c750120597a5ee40c6b928d416186cb138" +dependencies = [ + "base64 0.10.1", + "bitflags 1.3.2", + "byteorder", + "bytes 0.4.12", + "futures 0.1.31", + "native-tls", + "rand 0.6.5", + "sha-1", + "tokio-codec", + "tokio-io", + "tokio-tcp", + "tokio-tls 0.2.1", +] + +[[package]] +name = "winapi" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" + [[package]] name = "winapi" version = "0.3.9" @@ -2663,6 +3700,12 @@ dependencies = [ "winapi-x86_64-pc-windows-gnu", ] +[[package]] +name = "winapi-build" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" + [[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" @@ -2807,13 +3850,32 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +[[package]] +name = "winreg" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69" +dependencies = [ + "winapi 0.3.9", +] + [[package]] name = "winreg" version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" dependencies = [ - "winapi", + "winapi 0.3.9", +] + +[[package]] +name = "ws2_32-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" +dependencies = [ + "winapi 0.2.8", + "winapi-build", ] [[package]] @@ -2878,7 +3940,7 @@ dependencies = [ "bzip2 0.4.4", "constant_time_eq", "crc32fast", - "crossbeam-utils", + "crossbeam-utils 0.8.16", "flate2", "hmac", "pbkdf2", @@ -2902,7 +3964,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb654964c003959ed64cbd0d7b329bcdcbd9690facd50c8617748d3622543972" dependencies = [ - "log", + "log 0.4.19", "thiserror", "zip 0.6.6", ] diff --git a/Cargo.toml b/Cargo.toml index fe3d461..e7d56db 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,17 +1,23 @@ [package] name = "tat_agent" -version = "1.0.3" +version = "1.0.4" edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -codepage-strings = "1.0.2" -tokio-tungstenite = { version = "0.19.0", features = ["native-tls"] } -tokio-stream = "0.1.14" -tokio = { version = "1.28.2", features = ["process", "rt", "macros"] } +tokio = { version = "0.2.22", features = ["full"]} +tokio01 = { version = "0.1.22", package = "tokio"} +futures01 = { version = "0.1", package = "futures"} +reqwest = { version = "0.10", features = ["blocking", "json", "stream"] } +websocket = "0.26.2" +bytes = "0.5.6" +# tokio-tungstenite = { version = "0.19.0", features = ["native-tls"] } +# tokio-stream = "0.1.14" +# tokio = { version = "1.28.2", features = ["process", "rt", "macros"] } +# reqwest = { version = "0.11.18", features = ["blocking", "json", "stream"] } +# bytes = "1.4.0" futures = "0.3.28" tokio-test = "0.4.2" -reqwest = { version = "0.11.18", features = ["blocking", "json", "stream"] } serde_json = "1.0.57" serde_bytes = "0.11.7" serde = { version = "1.0.115", features = ["derive"] } @@ -24,7 +30,6 @@ rand = "0.8.5" base64 = "0.21.2" chrono = "0.4.18" md5 = "0.7.0" -bytes = "1.4.0" unzip = "0.1.0" hyper = { version = "0.14.26" } async-trait = "0.1.50" @@ -77,6 +82,7 @@ winapi = { version = "0.3.9", features = [ "memoryapi", "subauth", ] } +codepage-strings = "1.0.2" ntapi = "0.4.1" nom = "7.1.1" diff --git a/src/conpty/gather.rs b/src/conpty/gather.rs index 71fa8b7..fb9105d 100644 --- a/src/conpty/gather.rs +++ b/src/conpty/gather.rs @@ -35,7 +35,8 @@ pub fn run(event_bus: &Arc, running_task_num: &Arc) { stop_counter: running_task_num.clone(), ws_seq_num: Arc::new(AtomicU64::new(0)), runtime: Arc::new( - Builder::new_multi_thread() + // Builder::new_multi_thread() + Builder::new().threaded_scheduler() .enable_all() .build() .expect("build pty runtime failed"), diff --git a/src/executor/proc.rs b/src/executor/proc.rs index f52b0a0..0a1b7fd 100644 --- a/src/executor/proc.rs +++ b/src/executor/proc.rs @@ -385,10 +385,11 @@ impl BaseCommand { } pub async fn process_finish(&self, child: &mut Child) { - let pid = child.id().unwrap(); + // let pid = child.id().unwrap(); + let pid = child.id(); info!("=>process `{}` finish", pid); let status = child - .wait() + // .wait() .await .expect("child process encountered an error"); let mut exit_code = self.exit_code.lock().expect("exit_code get lock failed"); @@ -584,7 +585,7 @@ mod tests { use base64::{engine::general_purpose::STANDARD, Engine}; use log::info; - use tokio::time::sleep; + use tokio::time::delay_for; cfg_if::cfg_if! { if #[cfg(unix)] { @@ -648,7 +649,7 @@ mod tests { } #[tokio::test] - async fn test_run_then_sleep() { + async fn test_run_then_delay_for() { init_log(); // it doesn't matter even if ./a.sh not exist let log_path = format!("./{}.log", gen_rand_str()); @@ -668,10 +669,10 @@ mod tests { let ret = cmd.run().await; assert!(ret.is_ok()); info!("cmd running, pid: {}", cmd.pid()); - sleep(Duration::from_secs(10)).await; + delay_for(Duration::from_secs(10)).await; // now it's NOT a defunct process, cmd will be auto-waited assert!(!is_process_exist(cmd.pid()).await); - //thread::sleep(Duration::new(10, 0)); + //thread::delay_for(Duration::new(10, 0)); } #[tokio::test] @@ -747,7 +748,7 @@ mod tests { #[cfg(unix)] async fn is_process_exist(pid: u32) -> bool { // maybe need a time to clear the dir - sleep(Duration::from_millis(2000)).await; + delay_for(Duration::from_millis(2000)).await; let path = format!("/proc/{}", pid); let ret = read_dir(path); let exist = ret.is_ok(); @@ -814,13 +815,13 @@ mod tests { assert!(ret.is_ok()); info!("{} running, pid:{}", filename, cmd.pid()); // now it's a still running - sleep(Duration::new(10, 0)).await; + delay_for(Duration::new(10, 0)).await; assert_eq!(cmd.is_started(), true); assert!(is_process_exist(cmd.pid()).await); let ret = cmd.cancel(); assert!(ret.is_ok()); - sleep(Duration::new(1, 0)).await; + delay_for(Duration::new(1, 0)).await; assert!(!is_process_exist(cmd.pid()).await); // cmd.cancel() called twice is OK and safe let ret = cmd.cancel(); @@ -829,7 +830,7 @@ mod tests { // Even after killed, call cmd.pid() is OK info!("{} killed, pid:{}", filename, cmd.pid()); info!("cmd: {:?}", cmd); - sleep(Duration::new(5, 0)).await; + delay_for(Duration::new(5, 0)).await; fs::remove_file(filename.as_str()).unwrap(); } @@ -870,7 +871,7 @@ mod tests { let mut cur_dropped = 0 as u64; // usage of read output loop { - sleep(Duration::from_secs(1)).await; + delay_for(Duration::from_secs(1)).await; let len = cmd.cur_output_len(); // is_finished() MUST be called after cur_output_len() let finished = cmd.is_finished(); @@ -889,9 +890,9 @@ mod tests { // Do output report task here // do_report(out, idx, dropped); if dropped > 0 { - // max report exceeds, get dropped and idx during sleep + // max report exceeds, get dropped and idx during delay_for let (out, idx, dropped_new) = cmd.next_output(); - info!("during sleep: idx: {}, drop {}, ", idx, dropped); + info!("during delay_for: idx: {}, drop {}, ", idx, dropped); assert_eq!(idx, 1); assert_eq!(dropped_new, dropped); assert_eq!(0, out.len()); @@ -903,7 +904,7 @@ mod tests { if finished { let (out, idx, dropped) = cmd.next_output(); - info!("after sleep: idx: {}, drop {}", idx, dropped); + info!("after delay_for: idx: {}, drop {}", idx, dropped); assert_eq!(idx, 2); assert_eq!(dropped, 12); assert_eq!(0, out.len()); @@ -914,7 +915,7 @@ mod tests { } // will see the output bytes in cmd.output info!("cmd:{:?}", cmd); - sleep(Duration::new(1, 0)).await; + delay_for(Duration::new(1, 0)).await; assert!(!is_process_exist(cmd.pid()).await); fs::remove_file(filename.as_str()).unwrap(); @@ -953,7 +954,7 @@ mod tests { assert!(ret.is_ok()); while !cmd.is_finished() { - sleep(Duration::new(1, 0)).await; + delay_for(Duration::new(1, 0)).await; } let (_, idx, dropped) = cmd.next_output(); @@ -996,7 +997,7 @@ mod tests { info!("{} running, pid:{}", filename, cmd.pid()); while !cmd.is_finished() { - sleep(Duration::new(1, 0)).await; + delay_for(Duration::new(1, 0)).await; } let (out, idx, dropped) = cmd.next_output(); @@ -1007,7 +1008,7 @@ mod tests { assert_eq!(out, "aGVsbG8gd29ybGQ="); info!("out:{}", out); info!("cmd:{:?}", cmd); - sleep(Duration::new(1, 0)).await; + delay_for(Duration::new(1, 0)).await; assert!(!is_process_exist(cmd.pid()).await); fs::remove_file(filename.as_str()).unwrap(); } @@ -1061,7 +1062,7 @@ mod tests { } } info!("total {} tasks run", cnt); - sleep(Duration::new(0, 500_000_000)).await; + delay_for(Duration::new(0, 500_000_000)).await; let finished = cmd.is_finished(); if finished { break; diff --git a/src/executor/thread.rs b/src/executor/thread.rs index 9f0d56a..599de53 100644 --- a/src/executor/thread.rs +++ b/src/executor/thread.rs @@ -14,7 +14,7 @@ use std::time::Duration; use log::{error, info}; use tokio::runtime::Runtime; use tokio::sync::Mutex; -use tokio::time::sleep; +use tokio::time::delay_for; use super::FINISH_RESULT_TERMINATED; const DEFAULT_OUTPUT_BYTE: u64 = 24 * 1024; @@ -69,7 +69,7 @@ impl HttpWorker { && resp.invocation_normal_task_set.is_empty() && resp.invocation_cancel_task_set.is_empty() { - sleep(Duration::from_millis(500)).await; + delay_for(Duration::from_millis(500)).await; continue; } for task in resp.invocation_normal_task_set.iter() { @@ -95,12 +95,12 @@ impl HttpWorker { let mut first_dropped: u64 = 0; let mut finished = cmd_arc.lock().await.is_finished(); loop { - // total sleep max 20 * 50 ms, i.e. 1s + // total delay_for max 20 * 50 ms, i.e. 1s for _ in 0..20 { if finished { break; } - sleep(Duration::from_millis(50)).await; + delay_for(Duration::from_millis(50)).await; finished = cmd_arc.lock().await.is_finished(); } let mut cmd = cmd_arc.lock().await; @@ -557,7 +557,7 @@ mod tests { invocation_task_id: "invt-test_cancel".to_string(), }; http_worker2.task_cancel(&task).await; - tokio::time::sleep(Duration::from_secs(1)).await; + tokio::time::delay_for(Duration::from_secs(1)).await; fs::remove_file(filename.as_str()).unwrap(); let finis_result = cmd.lock().await.finish_result(); assert_eq!(finis_result, FINISH_RESULT_TERMINATED); //need read twice diff --git a/src/executor/unix.rs b/src/executor/unix.rs index 94130f2..344918a 100644 --- a/src/executor/unix.rs +++ b/src/executor/unix.rs @@ -135,7 +135,8 @@ impl UnixCommand { self.base.cmd_path, self.base.work_dir, e ) })?; - *self.base.pid.lock().unwrap() = Some(child.id().unwrap()); + // *self.base.pid.lock().unwrap() = Some(child.id().unwrap()); + *self.base.pid.lock().unwrap() = Some(child.id()); Ok(child) } } @@ -184,7 +185,8 @@ impl BaseCommand { async fn read_output(&self, child: &mut Child, mut log_file: File) { const BUF_SIZE: usize = 1024; - let pid = child.id().unwrap(); + // let pid = child.id().unwrap(); + let pid = child.id(); let stdout = child.stdout.take(); let mut buffer: [u8; BUF_SIZE] = [0; BUF_SIZE]; let mut reader = BufReader::new(stdout.unwrap()); diff --git a/src/executor/windows.rs b/src/executor/windows.rs index 012abfc..3cacb4c 100644 --- a/src/executor/windows.rs +++ b/src/executor/windows.rs @@ -203,7 +203,8 @@ impl WindowsCommand { self.base.cmd_path, self.base.work_dir, e ) })?; - *self.base.pid.lock().unwrap() = Some(child.id().unwrap()); + // *self.base.pid.lock().unwrap() = Some(child.id().unwrap()); + *self.base.pid.lock().unwrap() = Some(child.id()); self.resume_as_user(); Ok(child) } diff --git a/src/network/mod.rs b/src/network/mod.rs index 923763e..31ef16e 100644 --- a/src/network/mod.rs +++ b/src/network/mod.rs @@ -161,7 +161,8 @@ pub fn register( register_value: &String, ) -> Result<(), String> { //temp runtime in current thread - tokio::runtime::Builder::new_current_thread() + // tokio::runtime::Builder::new_current_thread() + tokio::runtime::Builder::new().basic_scheduler() .enable_all() .build() .expect("register runtime failed") @@ -175,7 +176,8 @@ pub fn register( } pub fn check() { - tokio::runtime::Builder::new_current_thread() + // tokio::runtime::Builder::new_current_thread() + tokio::runtime::Builder::new().basic_scheduler() .enable_all() .build() .expect("check runtime failed") diff --git a/src/network/ws.rs b/src/network/ws.rs index 2be6ddf..8d3c51e 100644 --- a/src/network/ws.rs +++ b/src/network/ws.rs @@ -1,10 +1,3 @@ -use crate::common::evbus::EventBus; -use crate::common::Opts; -use crate::network::build_extra_headers; -use crate::network::types::ws_msg::WsMsg; -use crate::network::urls::get_ws_url; - -use std::borrow::Cow; use std::cmp::min; use std::io::Cursor; use std::sync::atomic::{AtomicBool, AtomicU64, AtomicUsize, Ordering}; @@ -13,26 +6,34 @@ use std::time::Duration; use std::{thread, time}; use bson::Document; -use log::{error, info}; +use futures01::future::Future; +use futures01::sync::mpsc::{self, UnboundedSender}; +use futures01::Stream; + +use log::{debug, error, info}; +use once_cell::sync::OnceCell; use serde_json::{self, Value}; +use tokio01::runtime::current_thread::Runtime; +use tokio01::timer::Interval; +use websocket::header::Headers; +use websocket::r#async::Server; +use websocket::result::WebSocketError; +use websocket::{ClientBuilder, CloseData, OwnedMessage}; + +use crate::common::evbus::EventBus; +use crate::common::Opts; +use crate::network::build_extra_headers; +use crate::network::types::ws_msg::WsMsg; +use crate::network::urls::get_ws_url; -use futures::channel::mpsc::{unbounded, UnboundedSender}; -use futures::prelude::*; -use tokio::net::TcpListener; -use tokio::runtime::Builder; -use tokio::time::interval; -use tokio_stream::wrappers::IntervalStream; -use tokio_tungstenite::tungstenite::client::IntoClientRequest; -use tokio_tungstenite::tungstenite::error::Error; -use tokio_tungstenite::tungstenite::protocol::frame::{coding::CloseCode, CloseFrame}; -use tokio_tungstenite::tungstenite::Message; -use tokio_tungstenite::{accept_async, connect_async}; use crate::conpty::{WS_BIN_MSG, WS_TXT_MSG}; use crate::network::types::ws_msg::{WS_MSG_TYPE_CHECK_UPDATE, WS_MSG_TYPE_KICK}; const WS_MSG_TYPE_ACK: &str = "ack"; const WS_PASSIVE_CLOSE: &str = "cli_passive_close"; +const WS_PASSIVE_CLOSE_CODE: u16 = 3001; const WS_ACTIVE_CLOSE: &str = "cli_active_close"; +const WS_ACTIVE_CLOSE_CODE: u16 = 3002; const MAX_PING_FROM_LAST_PONG: usize = 3; const WS_RECONNECT_INTERVAL_BASE: u64 = 3; const WS_RECONNECT_RANDOM_MAX: u64 = 512; @@ -42,7 +43,7 @@ const ONTIME_PING_INTERVAL: u64 = 2 * 60; #[derive(Clone)] struct WsContext { - msg_sender: Arc>>>, + msg_sender: Arc>>>, event_bus: Arc, ping_cnt_from_last_pong: Arc, close_sent: Arc, @@ -70,73 +71,71 @@ impl WsContext { event_bus.register(WS_TXT_MSG, move |data: Vec| { let data = String::from_utf8_lossy(&data).to_string(); if let Some(sender) = wsctx_0.msg_sender.read().unwrap().as_ref() { - sender.unbounded_send(Message::Text(data)).ok(); + sender.unbounded_send(OwnedMessage::Text(data)).ok(); } }); let wsctx_1 = context.clone(); event_bus.register(WS_BIN_MSG, move |data: Vec| { if let Some(sender) = wsctx_1.msg_sender.read().unwrap().as_ref() { - sender.unbounded_send(Message::Binary(data)).ok(); + sender.unbounded_send(OwnedMessage::Binary(data)).ok(); } }); return context; } fn work_as_client(&self) { - let runtime = Builder::new_current_thread() - .enable_all() - .build() - .expect("ws tokio runtime build failed"); + let mut runtime = Runtime::new().expect("ws tokio runtime build fail"); let mut random_range = WS_RECONNECT_RANDOM_MIN; loop { info!("start ws connection..."); + let header = gen_ver_header(); self.close_sent.store(false, Ordering::SeqCst); self.ping_cnt_from_last_pong.store(0, Ordering::SeqCst); - let mut req = get_ws_url() - .into_client_request() - .expect("Url to request failed"); - req.headers_mut().extend(build_extra_headers()); - let ws_stream = connect_async(req).map_err(|e| { - error!("ws connect failed: {:?}", e); - e - }); + let ws_stream = ClientBuilder::new(&get_ws_url()) + .expect("ws cli builder fail") + .custom_headers(&header) + .async_connect(None); let runner = ws_stream + .map_err(|e| { + error!("ws connect fail:{:?}", e); + e + }) .and_then(|(duplex, _)| { info!("ws connection established"); random_range = WS_RECONNECT_RANDOM_MIN; - - // check unfinished task on ws connected + //dispatch kick msg on ws connected self.event_bus - .dispatch(WS_MSG_TYPE_KICK, "start".to_string().into_bytes()); + .dispatch(WS_MSG_TYPE_KICK, "ws".to_string().into_bytes()); - let (sink, stream) = duplex.split(); - let (msg_sender, msg_receiver) = unbounded::(); + let (msg_sender, msg_receiver) = mpsc::unbounded::(); self.msg_sender.write().unwrap().replace(msg_sender); - let msg_stream = stream - .filter_map(|res| async move { res.ok() }) - .filter_map(|msg| async move { self.handle_server_msg(msg) }); - let select_stream = stream::select(msg_receiver, self.make_ping_check()); - stream::select(msg_stream, select_stream) - .map(|msg| Ok(msg)) + let (sink, stream) = duplex.split(); + stream + .filter_map(|msg| self.handle_server_msg(msg)) + .select(msg_receiver.map_err(|_| WebSocketError::NoDataAvailable)) + .select(self.make_ping_check()) .forward(sink) .map_err(|e| { - error!("ws connection ended with an error: {:?}", e); + error!("ws connection ended with an error:{:?}", e); e }) }) - .map(|_| info!("ws connection finished")); + .map(|_| { + info!("ws connection finished"); + }); let _ = runtime.block_on(runner); self.msg_sender.write().unwrap().take(); - // round 1: wait(WS_RECONNECT_INTERVAL_BASE + random(0, BASE + MIN)) - // ... - // round n: wait(WS_RECONNECT_INTERVAL_BASE + random(0, min(BASE + MIN*4^n, MAX))) + /*round 1: wait(WS_RECONNECT_INTERVAL_BASE + random(0,BASE + MIN)) + ... + round n: wait(WS_RECONNECT_INTERVAL_BASE + random(0,max(BASE + MIN*4^n,MAX))) + */ let wait_time = WS_RECONNECT_INTERVAL_BASE + rand::random::() % random_range; thread::sleep(time::Duration::from_secs(wait_time)); random_range = min( @@ -146,28 +145,27 @@ impl WsContext { } } - fn handle_server_msg(&self, msg: Message) -> Option { + fn handle_server_msg(&self, msg: OwnedMessage) -> Option { //info!("ws recv msg: {:?}", msg); match msg { - Message::Ping(data) => Some(Message::Pong(data)), - Message::Pong(_) => { + OwnedMessage::Ping(data) => Some(OwnedMessage::Pong(data)), + OwnedMessage::Pong(_) => { self.ping_cnt_from_last_pong.store(0, Ordering::SeqCst); None } - Message::Text(msg) => self.handle_ws_text_msg(msg), - Message::Binary(msg) => self.handle_ws_bin_msg(msg), - Message::Close(_) => { + OwnedMessage::Text(msg) => self.handle_ws_text_msg(msg), + OwnedMessage::Binary(msg) => self.handle_ws_bin_msg(msg), + OwnedMessage::Close(_) => { self.close_sent.store(true, Ordering::SeqCst); - Some(Message::Close(Some(CloseFrame { - code: CloseCode::Away, - reason: Cow::from(WS_PASSIVE_CLOSE), + Some(OwnedMessage::Close(Some(CloseData { + status_code: WS_PASSIVE_CLOSE_CODE, + reason: WS_PASSIVE_CLOSE.to_string(), }))) } - Message::Frame(_) => None, } } - fn handle_ws_text_msg(&self, msg: String) -> Option { + fn handle_ws_text_msg(&self, msg: String) -> Option { let msg_json: Value = serde_json::from_str(msg.as_str()).ok()?; let msg_type = msg_json.get("Type")?.as_str()?; match msg_type { @@ -181,7 +179,7 @@ impl WsContext { None } - fn handle_ws_bin_msg(&self, msg: Vec) -> Option { + fn handle_ws_bin_msg(&self, msg: Vec) -> Option { if let Ok(doc) = Document::from_reader(&mut Cursor::new(&msg[..])) { if let Ok(msg_type) = doc.get_str("Type") { self.event_bus.dispatch(msg_type, msg) @@ -190,7 +188,7 @@ impl WsContext { None } - fn handle_kick_msg(&self) -> Option { + fn handle_kick_msg(&self) -> Option { info!("kick_sender sent to notify fetch task, kick_source ws"); self.event_bus .dispatch(WS_MSG_TYPE_KICK, "ws".to_string().into_bytes()); @@ -200,18 +198,17 @@ impl WsContext { seq: 0, data: None, }; - let ret = serde_json::to_string(&ack_msg); match ret { - Ok(ws_rsp) => Some(Message::Text(ws_rsp)), + Ok(ws_rsp) => Some(OwnedMessage::Text(ws_rsp)), Err(e) => { - error!("ws rsp json encode failed: {:?}", e); + error!("ws rsp json encode fail:{:?}", e); None } } } - fn handle_check_update_msg(&self) -> Option { + fn handle_check_update_msg(&self) -> Option { info!("kick_sender sent to notify check update, kick_source ws"); self.event_bus .dispatch(WS_MSG_TYPE_CHECK_UPDATE, "ws".to_string().into_bytes()); @@ -224,111 +221,121 @@ impl WsContext { let ret = serde_json::to_string(&ack_msg); match ret { - Ok(ws_rsp) => Some(Message::Text(ws_rsp)), + Ok(ws_rsp) => Some(OwnedMessage::Text(ws_rsp)), Err(e) => { - error!("ws rsp json encode failed: {:?}", e); + error!("ws rsp json encode fail:{:?}", e); None } } } - fn make_ping_check(&self) -> impl Stream { - let self_0 = Arc::new(self.clone()); - let self_1 = Arc::new(self.clone()); + fn make_ping_check(&self) -> Box> { + let self_0 = self.clone(); + let self_1 = self.clone(); let count = Arc::new(AtomicU64::new(0)); - - IntervalStream::new(interval(Duration::from_secs(1))) + let stream = Interval::new_interval(Duration::from_secs(1)) .then(move |_| { - let self_ = self_0.clone(); - async move { - if self_.close_sent.load(Ordering::SeqCst) { - error!("ping_check close_sent is true"); - return Err(Error::ConnectionClosed); - } - Ok(()) + if self_0.close_sent.load(Ordering::SeqCst) { + error!("ping_check close_sent is true"); + return Err(WebSocketError::NoDataAvailable); } + Ok(()) }) .filter(move |_| { - let old = count.clone().fetch_add(1, Ordering::SeqCst); - async move { old % ONTIME_PING_INTERVAL == 0 } + let old = count.fetch_add(1, Ordering::SeqCst); + old % ONTIME_PING_INTERVAL == 0 }) .and_then(move |_| { - let self_ = self_1.clone(); - async move { - let cnt = self_.ping_cnt_from_last_pong.fetch_add(1, Ordering::SeqCst); - if cnt >= MAX_PING_FROM_LAST_PONG { - error!("ping_check error: cnt >= MAX_PING_FROM_LAST_PONG"); - self_.close_sent.store(true, Ordering::SeqCst); - Ok(Message::Close(Some(CloseFrame { - code: CloseCode::Normal, - reason: Cow::from(WS_ACTIVE_CLOSE), - }))) - } else { - Ok(Message::Ping(Vec::new())) - } + let cnt = self_1 + .ping_cnt_from_last_pong + .fetch_add(1, Ordering::SeqCst); + if cnt >= MAX_PING_FROM_LAST_PONG { + error!("ping_check err, cnt >= MAX_PING_FROM_LAST_PONG"); + self_1.close_sent.store(true, Ordering::SeqCst); + Ok(OwnedMessage::Close(Some(CloseData { + status_code: WS_ACTIVE_CLOSE_CODE, + reason: WS_ACTIVE_CLOSE.to_string(), + }))) + } else { + Ok(OwnedMessage::Ping("".to_string().into_bytes())) } - }) - .filter_map(|res| async move { res.ok() }) + }); + Box::new(stream) } fn work_as_server(&self) { info!("work as server"); - let runtime = Builder::new_current_thread().build().unwrap(); - let _ = async move { - let listener = TcpListener::bind("0.0.0.0:3333") - .await - .expect("bind failed"); - let fut = listener.accept().and_then(|(tcp_stream, addr)| async move { - let ws_stream = accept_async(tcp_stream) - .await - .expect("Error during the websocket handshake occurred"); + static SERVER_CONTEXT: OnceCell> = OnceCell::new(); + let _ = SERVER_CONTEXT.set(Arc::new(self.clone())); + let mut runtime = tokio01::runtime::Builder::new().build().unwrap(); + + let server = + Server::bind("0.0.0.0:3333", &tokio01::reactor::Handle::default()).expect("bind fail"); + + let f = server + .incoming() + .map_err(|err| { + error!("incoming error {:?}", err); + err + }) + .for_each(move |(upgrade, addr)| { info!("get a connection from: {}", addr); - let (sink, stream) = ws_stream.split(); - let (msg_sender, msg_receiver) = unbounded::(); - let self_ = Arc::new(self.clone()); - self_ - .msg_sender - .write() - .expect("get sender lock failed") - .replace(msg_sender); - let msg_stream = + let self_ = SERVER_CONTEXT.get().expect("get server").clone(); + let f = upgrade.accept().and_then(move |(s, _)| { + let (sink, stream) = s.split(); + let (msg_sender, msg_receiver) = mpsc::unbounded::(); + self_ + .msg_sender + .write() + .expect("get sender lock fail") + .replace(msg_sender); + let self_ = self_.clone(); stream - .filter_map(|res| async move { res.ok() }) - .filter_map(move |msg| { - let self_ = self_.clone(); - async move { self_.clone().handle_server_msg(msg) } - }); - let fut = stream::select(msg_stream, msg_receiver) - .map(|msg| Ok(msg)) - .forward(sink) - .map_err(move |e| println!("{}: '{:?}'", addr, e)) - .map(move |_| println!("{} closed.", addr)); - tokio::spawn(fut); + .filter_map(move |msg| self_.handle_server_msg(msg)) + .select(msg_receiver.map_err(|_| WebSocketError::NoDataAvailable)) + .forward(sink) + }); + + tokio01::spawn( + f.map_err(move |e| println!("{}: '{:?}'", addr, e)) + .map(move |_| println!("{} closed.", addr)), + ); Ok(()) }); - let _ = runtime.block_on(fut); - }; + runtime.block_on(f).unwrap(); + } +} + +fn gen_ver_header() -> Headers { + let mut headers = Headers::new(); + let header_maps = build_extra_headers(); + for (opt_key, value) in header_maps.into_iter() { + if let Some(key) = opt_key { + headers.append_raw(key.to_string(), value.as_bytes().to_vec()) + } } + + debug!("ws header:{:?}", headers); + headers } // handle the message from WebSocket server #[cfg(test)] mod tests { - // use super::*; - use crate::common::logger::init_test_log; - use crate::network::{build_extra_headers, mock_enabled}; + use super::*; + use crate::{common::logger::init_test_log, network::mock_enabled}; use log::info; #[test] fn _test_ws_cus_header() { init_test_log(); - let header = build_extra_headers(); + let header = gen_ver_header(); if mock_enabled() { assert_eq!(4, header.len()); } else { assert_eq!(2, header.len()); } - info!("header: {:?}", header); + info!("header:{:?}", header); } } diff --git a/src/ontime/leak_check.rs b/src/ontime/leak_check.rs index 3833131..ed59247 100644 --- a/src/ontime/leak_check.rs +++ b/src/ontime/leak_check.rs @@ -81,7 +81,8 @@ pub fn check_resource_leak() { "ReportResource mem {} handle {} zp_cnt {}", mem_avg, fd_avg, zp_cnt ); - let _ = Builder::new_current_thread() + // let _ = Builder::new_current_thread() + let _ = Builder::new().basic_scheduler() .enable_all() .build() .unwrap() diff --git a/src/ontime/self_update.rs b/src/ontime/self_update.rs index 838ce14..e056a6f 100644 --- a/src/ontime/self_update.rs +++ b/src/ontime/self_update.rs @@ -32,7 +32,7 @@ cfg_if::cfg_if! { } pub fn try_update(self_updating: Arc, need_restart: Arc) { - let rt_res = Builder::new_current_thread().enable_all().build(); + let rt_res = Builder::new().basic_scheduler().enable_all().build(); if let Err(e) = rt_res { warn!("runtime for try update build failed: {e:?}, will retry later"); self_updating.store(false, Ordering::SeqCst);