From 0fde80336ea5181959ebd93439c37cdb2f6dceab Mon Sep 17 00:00:00 2001 From: Luander <837720+luander@users.noreply.github.com> Date: Wed, 14 Aug 2024 15:41:35 +0200 Subject: [PATCH] Fix/cbid 3954 upgrade time crate to fix nightly (#4) * Cherry-picked: Upgrade to latest Actix Web and also fix some broken logic in demo server * Cherry-picked: Remove time crate and cleanup some time functions (#260) * Cherry-picked: Fix a failing test * enable workflow * temporary remove samples/web-client from workspace * support nightly in workflows --- .github/workflows/main.yml | 46 +- .gitignore | 1 + Cargo.lock | 2840 ++++++----------- Cargo.toml | 4 +- integration/src/harness.rs | 12 +- lib/Cargo.toml | 9 +- lib/src/client/client.rs | 8 +- lib/src/client/comms/tcp_transport.rs | 109 +- lib/src/client/message_queue.rs | 9 +- lib/src/client/session/session.rs | 14 +- lib/src/client/session/session_state.rs | 2 +- lib/src/client/session_retry_policy.rs | 4 +- lib/src/core/comms/tcp_codec.rs | 4 +- lib/src/server/http/mod.rs | 122 +- lib/src/server/subscriptions/mod.rs | 6 +- .../server/subscriptions/monitored_item.rs | 5 +- lib/src/server/subscriptions/subscription.rs | 6 +- lib/src/server/subscriptions/subscriptions.rs | 15 +- lib/src/server/tests/mod.rs | 26 +- .../server/tests/services/monitored_item.rs | 20 +- lib/src/server/tests/services/subscription.rs | 5 +- lib/src/types/array.rs | 3 +- lib/src/types/byte_string.rs | 9 +- lib/src/types/qualified_name.rs | 2 +- lib/src/types/tests/mod.rs | 2 +- samples/chess-server/src/main.rs | 3 +- samples/demo-server/Cargo.toml | 1 + samples/demo-server/src/main.rs | 26 +- 28 files changed, 1264 insertions(+), 2049 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 97e4eb3e3..b059b67de 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,35 +1,51 @@ name: OPC UA for Rust on: - push: - branches: [ master ] pull_request: - branches: [ master ] + branches: + - main env: CARGO_TERM_COLOR: always jobs: build-linux: - runs-on: ubuntu-latest + name: OPC UA for Rust - ${{ matrix.toolchain }} + + strategy: + matrix: + toolchain: [ nightly, stable ] + platform: [ ubuntu-latest ] + runs-on: ${{ matrix.platform }} + steps: - - uses: actions/checkout@v3 + - name: Install Rust + uses: dtolnay/rust-toolchain@master + with: + toolchain: ${{ matrix.toolchain }} + + - name: Checkout code + uses: actions/checkout@v4 + - name: Build run: cargo build --features test-vendored-openssl + - name: Run tests run: cargo test --features test-vendored-openssl --verbose + - name: Run integration tests run: | cd integration sh ./run.sh - build-windows: - runs-on: windows-latest - env: - VCPKGRS_DYNAMIC: 1 - steps: - - uses: actions/checkout@v3 - - name: Build - run: cargo build --features test-vendored-openssl - - name: Run tests - run: cargo test --features test-vendored-openssl --verbose + ## Note: We don't rely on windows, so let's save some compute + # build-windows: + # runs-on: windows-latest + # env: + # VCPKGRS_DYNAMIC: 1 + # steps: + # - uses: actions/checkout@v3 + # - name: Build + # run: cargo build --features test-vendored-openssl + # - name: Run tests + # run: cargo test --features test-vendored-openssl --verbose diff --git a/.gitignore b/.gitignore index 082475064..288b089a5 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ log/ /samples/server.test.conf /integration/pki-client /integration/pki-server +3rd-party/open62541/build/ \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index c7c9b3de9..388e6f1e5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3,202 +3,259 @@ version = 3 [[package]] -name = "actix" -version = "0.7.9" +name = "actix-codec" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c616db5fa4b0c40702fb75201c2af7f8aa8f3a2e2c1dda3b0655772aa949666" +checksum = "5f7b0a21988c1bf877cf4759ef5ddaac04c1c9fe808c9142ecb78ba97d97a28a" dependencies = [ - "actix_derive", - "bitflags", - "bytes 0.4.12", - "crossbeam-channel", - "failure", - "fnv", - "futures 0.1.31", - "libc", - "log 0.4.17", - "parking_lot 0.7.1", - "smallvec 0.6.14", - "tokio 0.1.22", - "tokio-codec", - "tokio-executor", - "tokio-io", - "tokio-reactor", - "tokio-signal", - "tokio-tcp", - "tokio-timer", - "trust-dns-proto 0.5.0", - "trust-dns-resolver", - "uuid 0.7.4", -] - -[[package]] -name = "actix-net" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bebfbe6629e0131730746718c9e032b58f02c6ce06ed7c982b9fef6c8545acd" -dependencies = [ - "actix", - "bytes 0.4.12", - "futures 0.1.31", - "log 0.4.17", - "mio 0.6.23", - "net2", - "num_cpus", - "slab", - "tokio 0.1.22", - "tokio-codec", - "tokio-current-thread", - "tokio-io", - "tokio-reactor", - "tokio-tcp", - "tokio-timer", - "tower-service", - "trust-dns-resolver", + "bitflags 2.6.0", + "bytes", + "futures-core", + "futures-sink", + "memchr", + "pin-project-lite", + "tokio", + "tokio-util 0.7.8", + "tracing", ] [[package]] -name = "actix-web" -version = "0.7.19" +name = "actix-files" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0ac60f86c65a50b140139f499f4f7c6e49e4b5d88fbfba08e4e3975991f7bf4" +checksum = "0773d59061dedb49a8aed04c67291b9d8cf2fe0b60130a381aab53c6dd86e9be" dependencies = [ - "actix", - "actix-net", - "base64 0.10.1", - "bitflags", - "brotli2", - "byteorder", - "bytes 0.4.12", - "cookie", - "encoding", - "failure", + "actix-http", + "actix-service", + "actix-utils", + "actix-web", + "bitflags 2.6.0", + "bytes", + "derive_more", + "futures-core", + "http-range", + "log 0.4.22", + "mime", + "mime_guess", + "percent-encoding 2.1.0", + "pin-project-lite", + "v_htmlescape", +] + +[[package]] +name = "actix-http" +version = "3.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ae682f693a9cd7b058f2b0b5d9a6d7728a8555779bedbbc35dd88528611d020" +dependencies = [ + "actix-codec", + "actix-rt", + "actix-service", + "actix-utils", + "ahash", + "base64 0.22.1", + "bitflags 2.6.0", + "brotli", + "bytes", + "bytestring", + "derive_more", + "encoding_rs", "flate2", - "futures 0.1.31", - "futures-cpupool", + "futures-core", "h2", - "http 0.1.21", + "http", "httparse", + "httpdate", + "itoa", "language-tags", - "lazy_static", - "lazycell", - "log 0.4.17", + "local-channel", "mime", - "mime_guess", - "mio 0.6.23", - "net2", - "num_cpus", - "parking_lot 0.7.1", - "percent-encoding 1.0.1", - "rand 0.6.5", - "regex", - "serde", - "serde_json", - "serde_urlencoded", + "percent-encoding 2.1.0", + "pin-project-lite", + "rand 0.8.5", "sha1", - "slab", - "smallvec 0.6.14", - "time", - "tokio 0.1.22", - "tokio-current-thread", - "tokio-io", - "tokio-reactor", - "tokio-tcp", - "tokio-timer", - "url", - "v_htmlescape", - "version_check 0.1.5", + "smallvec", + "tokio", + "tokio-util 0.7.8", + "tracing", + "zstd", ] [[package]] -name = "actix_derive" -version = "0.3.2" +name = "actix-macros" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4300e9431455322ae393d43a2ba1ef96b8080573c0fc23b196219efedfb6ba69" +checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" dependencies = [ - "proc-macro2 0.4.30", - "quote 0.6.13", - "syn 0.15.44", + "quote", + "syn 2.0.71", ] [[package]] -name = "addr2line" -version = "0.19.0" +name = "actix-router" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" +checksum = "13d324164c51f63867b57e73ba5936ea151b8a41a1d23d1031eeb9f70d0236f8" dependencies = [ - "gimli", + "bytestring", + "cfg-if", + "http", + "regex", + "regex-lite", + "serde", + "tracing", ] [[package]] -name = "adler" -version = "1.0.2" +name = "actix-rt" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "24eda4e2a6e042aa4e55ac438a2ae052d3b5da0ecf83d7411e1a368946925208" +dependencies = [ + "futures-core", + "tokio", +] [[package]] -name = "aead" -version = "0.3.2" +name = "actix-server" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fc95d1bdb8e6666b2b217308eeeb09f2d6728d104be3e31916cc74d15420331" +checksum = "b02303ce8d4e8be5b855af6cf3c3a08f3eff26880faad82bab679c22d3650cb5" dependencies = [ - "generic-array", + "actix-rt", + "actix-service", + "actix-utils", + "futures-core", + "futures-util", + "mio", + "socket2 0.5.7", + "tokio", + "tracing", ] [[package]] -name = "aes" -version = "0.6.0" +name = "actix-service" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "884391ef1066acaa41e766ba8f596341b96e93ce34f9a43e7d24bf0a0eaf0561" +checksum = "3b894941f818cfdc7ccc4b9e60fa7e53b5042a2e8567270f9147d5591893373a" dependencies = [ - "aes-soft", - "aesni", - "cipher", + "futures-core", + "paste", + "pin-project-lite", ] [[package]] -name = "aes-gcm" -version = "0.8.0" +name = "actix-utils" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5278b5fabbb9bd46e24aa69b2fdea62c99088e0a950a9be40e3e0101298f88da" +checksum = "88a1dcdff1466e3c2488e1cb5c36a71822750ad43839937f85d2f4d9f8b705d8" dependencies = [ - "aead", - "aes", - "cipher", - "ctr", - "ghash", - "subtle", + "local-waker", + "pin-project-lite", +] + +[[package]] +name = "actix-web" +version = "4.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1988c02af8d2b718c05bc4aeb6a66395b7cdf32858c2c71131e5637a8c05a9ff" +dependencies = [ + "actix-codec", + "actix-http", + "actix-macros", + "actix-router", + "actix-rt", + "actix-server", + "actix-service", + "actix-utils", + "actix-web-codegen", + "ahash", + "bytes", + "bytestring", + "cfg-if", + "cookie", + "derive_more", + "encoding_rs", + "futures-core", + "futures-util", + "itoa", + "language-tags", + "log 0.4.22", + "mime", + "once_cell", + "pin-project-lite", + "regex", + "regex-lite", + "serde", + "serde_json", + "serde_urlencoded", + "smallvec", + "socket2 0.5.7", + "time", + "url 2.3.0", ] [[package]] -name = "aes-soft" -version = "0.6.4" +name = "actix-web-codegen" +version = "4.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be14c7498ea50828a38d0e24a765ed2effe92a705885b57d029cd67d45744072" +checksum = "f591380e2e68490b5dfaf1dd1aa0ebe78d84ba7067078512b4ea6e4492d622b8" dependencies = [ - "cipher", - "opaque-debug", + "actix-router", + "proc-macro2", + "quote", + "syn 2.0.71", ] [[package]] -name = "aesni" -version = "0.10.0" +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "ahash" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea2e11f5e94c2f7d386164cc2aa1f97823fed6f259e486940a71c174dd01b0ce" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ - "cipher", - "opaque-debug", + "cfg-if", + "getrandom 0.2.15", + "once_cell", + "version_check", + "zerocopy", ] [[package]] name = "aho-corasick" -version = "0.7.20" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" dependencies = [ "memchr", ] +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + [[package]] name = "android_system_properties" version = "0.1.5" @@ -210,24 +267,15 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.70" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4" +checksum = "508b352bb5c066aac251f6daf6b36eccd03e8a88e8081cd44959ea277a3af9a8" [[package]] name = "arc-swap" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6" - -[[package]] -name = "autocfg" -version = "0.1.8" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dde43e75fd43e8a1bf86103336bc699aa8d17ad1be60c76c0bdfd4828e19b78" -dependencies = [ - "autocfg 1.1.0", -] +checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" [[package]] name = "autocfg" @@ -235,41 +283,23 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" -[[package]] -name = "backtrace" -version = "0.3.67" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca" -dependencies = [ - "addr2line", - "cc", - "cfg-if 1.0.0", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", -] - [[package]] name = "base64" -version = "0.10.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" -dependencies = [ - "byteorder", -] +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" [[package]] name = "base64" -version = "0.13.1" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" +checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" [[package]] name = "base64" -version = "0.21.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bitflags" @@ -277,40 +307,47 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" + [[package]] name = "block-buffer" -version = "0.9.0" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ "generic-array", ] [[package]] -name = "brotli-sys" -version = "0.3.2" +name = "brotli" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4445dea95f4c2b41cde57cc9fee236ae4dbae88d8fcbdb4750fc1bb5d86aaecd" +checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b" dependencies = [ - "cc", - "libc", + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", ] [[package]] -name = "brotli2" -version = "0.3.2" +name = "brotli-decompressor" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cb036c3eade309815c15ddbacec5b22c4d1f3983a774ab2eac2e3e9ea85568e" +checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" dependencies = [ - "brotli-sys", - "libc", + "alloc-no-stdlib", + "alloc-stdlib", ] [[package]] name = "bumpalo" -version = "3.12.0" +version = "3.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" +checksum = "37ccbd214614c6783386c1af30caf03192f17891059cecc394b4fb119e363de3" [[package]] name = "byteorder" @@ -318,16 +355,6 @@ 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 = "1.4.0" @@ -335,16 +362,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" [[package]] -name = "cc" -version = "1.0.79" +name = "bytestring" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +checksum = "74d80203ea6b29df88012294f62733de21cfeab47f17b41af3a38bc30a03ee72" +dependencies = [ + "bytes", +] [[package]] -name = "cfg-if" -version = "0.1.10" +name = "cc" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" +checksum = "324c74f2155653c90b04f25b2a47a8a631360cb908f92a772695f430c7e31052" +dependencies = [ + "jobserver", + "libc", +] [[package]] name = "cfg-if" @@ -354,62 +388,34 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.24" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ + "android-tzdata", "iana-time-zone", "js-sys", - "num-integer", "num-traits", "serde", - "time", "wasm-bindgen", - "winapi 0.3.9", + "windows-targets 0.52.6", ] [[package]] -name = "cipher" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" -dependencies = [ - "generic-array", -] - -[[package]] -name = "cloudabi" -version = "0.0.3" +name = "convert_case" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -dependencies = [ - "bitflags", -] - -[[package]] -name = "codespan-reporting" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" -dependencies = [ - "termcolor", - "unicode-width", -] +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" [[package]] name = "cookie" -version = "0.11.5" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be2018768ed1d848cc4d347d551546474025ba820e5db70e4c9aaa349f678bd7" +checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb" dependencies = [ - "aes-gcm", - "base64 0.13.1", - "hkdf", - "hmac", - "percent-encoding 2.2.0", - "rand 0.8.5", - "sha2", + "percent-encoding 2.1.0", "time", + "version_check", ] [[package]] @@ -430,167 +436,63 @@ checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" [[package]] name = "cpufeatures" -version = "0.2.6" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "280a9f2d8b3a38871a3c8a46fb80db65e5e5ed97da80c4d08bf27fb63e35e181" +checksum = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b" dependencies = [ "libc", ] -[[package]] -name = "cpuid-bool" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcb25d077389e53838a8158c8e99174c5a9d902dee4904320db714f3c653ffba" - [[package]] name = "crc32fast" version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" dependencies = [ - "cfg-if 1.0.0", -] - -[[package]] -name = "crossbeam-channel" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8ec7fcd21571dc78f96cc96243cab8d8f035247c3efd16c687be154c3fa9efa" -dependencies = [ - "crossbeam-utils 0.6.6", -] - -[[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 1.1.0", -] - -[[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", + "cfg-if", ] [[package]] -name = "crossbeam-utils" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6" -dependencies = [ - "cfg-if 0.1.10", - "lazy_static", -] - -[[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]] -name = "crypto-mac" -version = "0.10.1" +name = "crypto-common" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bff07008ec701e8028e2ceb8f83f0e4274ee62bd2dbdc4fefff2e9a91824081a" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array", - "subtle", -] - -[[package]] -name = "ctr" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb4a30d54f7443bf3d6191dcd486aca19e67cb3c49fa7a06a319966346707e7f" -dependencies = [ - "cipher", -] - -[[package]] -name = "cxx" -version = "1.0.94" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f61f1b6389c3fe1c316bf8a4dccc90a38208354b330925bce1f74a6c4756eb93" -dependencies = [ - "cc", - "cxxbridge-flags", - "cxxbridge-macro", - "link-cplusplus", + "typenum", ] [[package]] -name = "cxx-build" -version = "1.0.94" +name = "deranged" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12cee708e8962df2aeb38f594aae5d827c022b6460ac71a7a3e2c3c2aae5a07b" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ - "cc", - "codespan-reporting", - "once_cell", - "proc-macro2 1.0.54", - "quote 1.0.26", - "scratch", - "syn 2.0.10", + "powerfmt", ] [[package]] -name = "cxxbridge-flags" -version = "1.0.94" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7944172ae7e4068c533afbb984114a56c46e9ccddda550499caa222902c7f7bb" - -[[package]] -name = "cxxbridge-macro" -version = "1.0.94" +name = "derivative" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2345488264226bf682893e25de0769f3360aac9957980ec49361b083ddaa5bc5" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ - "proc-macro2 1.0.54", - "quote 1.0.26", - "syn 2.0.10", + "proc-macro2", + "quote", + "syn 1.0.99", ] [[package]] -name = "derivative" -version = "2.2.0" +name = "derive_more" +version = "0.99.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" dependencies = [ - "proc-macro2 1.0.54", - "quote 1.0.26", - "syn 1.0.109", + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.71", ] [[package]] @@ -601,83 +503,23 @@ checksum = "3c877555693c14d2f84191cfd3ad8582790fc52b5e2274b40b59cf5f5cea25c7" [[package]] name = "digest" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -dependencies = [ - "generic-array", -] - -[[package]] -name = "dtoa" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" - -[[package]] -name = "encoding" -version = "0.2.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b0d943856b990d12d3b55b359144ff341533e516d94098b1d3fc1ac666d36ec" -dependencies = [ - "encoding-index-japanese", - "encoding-index-korean", - "encoding-index-simpchinese", - "encoding-index-singlebyte", - "encoding-index-tradchinese", -] - -[[package]] -name = "encoding-index-japanese" -version = "1.20141219.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04e8b2ff42e9a05335dbf8b5c6f7567e5591d0d916ccef4e0b1710d32a0d0c91" -dependencies = [ - "encoding_index_tests", -] - -[[package]] -name = "encoding-index-korean" -version = "1.20141219.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dc33fb8e6bcba213fe2f14275f0963fd16f0a02c878e3095ecfdf5bee529d81" -dependencies = [ - "encoding_index_tests", -] - -[[package]] -name = "encoding-index-simpchinese" -version = "1.20141219.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d87a7194909b9118fc707194baa434a4e3b0fb6a5a757c73c3adb07aa25031f7" -dependencies = [ - "encoding_index_tests", -] - -[[package]] -name = "encoding-index-singlebyte" -version = "1.20141219.5" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3351d5acffb224af9ca265f435b859c7c01537c0849754d3db3fdf2bfe2ae84a" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "encoding_index_tests", + "block-buffer", + "crypto-common", ] [[package]] -name = "encoding-index-tradchinese" -version = "1.20141219.5" +name = "encoding_rs" +version = "0.8.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd0e20d5688ce3cab59eb3ef3a2083a5c77bf496cb798dc6fcdb75f323890c18" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" dependencies = [ - "encoding_index_tests", + "cfg-if", ] -[[package]] -name = "encoding_index_tests" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569" - [[package]] name = "env_logger" version = "0.10.0" @@ -686,20 +528,26 @@ checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" dependencies = [ "humantime", "is-terminal", - "log 0.4.17", + "log 0.4.22", "regex", "termcolor", ] +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + [[package]] name = "errno" -version = "0.2.8" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" +checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" dependencies = [ "errno-dragonfly", "libc", - "winapi 0.3.9", + "windows-sys 0.48.0", ] [[package]] @@ -712,42 +560,11 @@ dependencies = [ "libc", ] -[[package]] -name = "error-chain" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6930e04918388a9a2e41d518c25cf679ccafe26733fb4127dbf21993f2575d46" -dependencies = [ - "backtrace", -] - -[[package]] -name = "failure" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" -dependencies = [ - "backtrace", - "failure_derive", -] - -[[package]] -name = "failure_derive" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" -dependencies = [ - "proc-macro2 1.0.54", - "quote 1.0.26", - "syn 1.0.109", - "synstructure", -] - [[package]] name = "flate2" -version = "1.0.25" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8a2db397cb1c8772f31494cb8917e48cd1e64f0fa7efac59fbd741a0a8ce841" +checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6" dependencies = [ "crc32fast", "miniz_oxide", @@ -763,7 +580,7 @@ dependencies = [ "futures-sink", "nanorand", "pin-project", - "spin 0.9.6", + "spin 0.9.8", ] [[package]] @@ -788,38 +605,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[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" +name = "form_urlencoded" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" +checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" dependencies = [ - "bitflags", - "fuchsia-zircon-sys", + "matches", + "percent-encoding 2.1.0", ] [[package]] -name = "fuchsia-zircon-sys" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" - -[[package]] -name = "futures" -version = "0.1.31" +name = "fuchsia-cprng" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" +checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" [[package]] name = "futures" -version = "0.3.27" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "531ac96c6ff5fd7c62263c5e3c67a603af4fcaee2e1a0ae5565ba3a11e69e549" +checksum = "ab30e97ab6aacfe635fad58f22c2bb06c8b685f7421eb1e064a729e2a5f481fa" dependencies = [ "futures-channel", "futures-core", @@ -832,9 +637,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.27" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac" +checksum = "2bfc52cbddcfd745bf1740338492bb0bd83d76c67b445f91c5fb29fae29ecaa1" dependencies = [ "futures-core", "futures-sink", @@ -842,25 +647,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.27" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd" - -[[package]] -name = "futures-cpupool" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" -dependencies = [ - "futures 0.1.31", - "num_cpus", -] +checksum = "d2acedae88d38235936c3922476b10fced7b2b68136f5e3c03c2d5be348a1115" [[package]] name = "futures-executor" -version = "0.3.27" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83" +checksum = "1d11aa21b5b587a64682c0094c2bdd4df0076c5324961a40cc3abd7f37930528" dependencies = [ "futures-core", "futures-task", @@ -869,38 +664,38 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.27" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89d422fa3cbe3b40dca574ab087abb5bc98258ea57eea3fd6f1fa7162c778b91" +checksum = "93a66fc6d035a26a3ae255a6d2bca35eda63ae4c5512bef54449113f7a1228e5" [[package]] name = "futures-macro" -version = "0.3.27" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6" +checksum = "0db9cce532b0eae2ccf2766ab246f114b56b9cf6d445e00c2549fbc100ca045d" dependencies = [ - "proc-macro2 1.0.54", - "quote 1.0.26", - "syn 1.0.109", + "proc-macro2", + "quote", + "syn 1.0.99", ] [[package]] name = "futures-sink" -version = "0.3.27" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec93083a4aecafb2a80a885c9de1f0ccae9dbd32c2bb54b0c3a65690e0b8d2f2" +checksum = "ca0bae1fe9752cf7fd9b0064c674ae63f97b37bc714d745cbde0afb7ec4e6765" [[package]] name = "futures-task" -version = "0.3.27" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879" +checksum = "842fc63b931f4056a24d59de13fb1272134ce261816e063e634ad0c15cdc5306" [[package]] name = "futures-util" -version = "0.3.27" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab" +checksum = "f0828a5471e340229c11c77ca80017937ce3c58cb788a17e5f1c2d5c485a9577" dependencies = [ "futures-channel", "futures-core", @@ -921,7 +716,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" dependencies = [ "typenum", - "version_check 0.9.4", + "version_check", ] [[package]] @@ -931,7 +726,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a329e22866dd78b35d2c639a4a23d7b950aeae300dfd79f4fb19f74055c2404" dependencies = [ "libc", - "windows 0.43.0", + "windows", ] [[package]] @@ -940,56 +735,41 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", "wasi 0.9.0+wasi-snapshot-preview1", ] [[package]] name = "getrandom" -version = "0.2.8" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "js-sys", "libc", "wasi 0.11.0+wasi-snapshot-preview1", "wasm-bindgen", ] -[[package]] -name = "ghash" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97304e4cd182c3846f7575ced3890c53012ce534ad9114046b0a9e00bb30a375" -dependencies = [ - "opaque-debug", - "polyval", -] - -[[package]] -name = "gimli" -version = "0.27.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4" - [[package]] name = "h2" -version = "0.1.26" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" dependencies = [ - "byteorder", - "bytes 0.4.12", + "bytes", "fnv", - "futures 0.1.31", - "http 0.1.21", - "indexmap", - "log 0.4.17", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap 2.2.6", "slab", - "string", - "tokio-io", + "tokio", + "tokio-util 0.7.8", + "tracing", ] [[package]] @@ -999,78 +779,54 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] -name = "hermit-abi" -version = "0.2.6" +name = "hashbrown" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hermit-abi" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" - -[[package]] -name = "hkdf" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51ab2f639c231793c5f6114bdb9bbe50a7dbbfcd7c7c6bd8475dec2d991e964f" -dependencies = [ - "digest", - "hmac", -] - -[[package]] -name = "hmac" -version = "0.10.1" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" dependencies = [ - "crypto-mac", - "digest", + "libc", ] [[package]] -name = "hostname" +name = "hermit-abi" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" -dependencies = [ - "libc", - "match_cfg", - "winapi 0.3.9", -] +checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" [[package]] name = "http" -version = "0.1.21" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6ccf5ede3a895d8856620237b2f02972c1bbc78d2965ad7fe8838d4a0ed41f0" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ - "bytes 0.4.12", + "bytes", "fnv", - "itoa 0.4.8", + "itoa", ] [[package]] -name = "http" -version = "0.2.9" +name = "http-range" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" -dependencies = [ - "bytes 1.4.0", - "fnv", - "itoa 1.0.6", -] +checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573" [[package]] name = "httparse" -version = "1.8.0" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "496ce29bb5a52785b44e0f7ca2847ae0bb839c9bd28f69acac9b99d461c0c04c" + +[[package]] +name = "httpdate" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "humantime" @@ -1080,26 +836,16 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "iana-time-zone" -version = "0.1.54" +version = "0.1.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c17cc76786e99f8d2f055c11159e7f0091c42474dcc3189fbab96072e873e6d" +checksum = "4c495f162af0bf17656d0014a0eded5f3cd2f365fdd204548c2869db89359dc7" dependencies = [ "android_system_properties", "core-foundation-sys", - "iana-time-zone-haiku", "js-sys", + "once_cell", "wasm-bindgen", - "windows 0.46.0", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" -dependencies = [ - "cxx", - "cxx-build", + "winapi", ] [[package]] @@ -1114,96 +860,88 @@ dependencies = [ ] [[package]] -name = "indexmap" -version = "1.9.3" +name = "idna" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" dependencies = [ - "autocfg 1.1.0", - "hashbrown", + "matches", + "unicode-bidi", + "unicode-normalization", ] [[package]] -name = "io-lifetimes" -version = "1.0.9" +name = "indexmap" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09270fd4fa1111bc614ed2246c7ef56239a3063d5be0d1ec3b589c505d400aeb" +checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" dependencies = [ - "hermit-abi 0.3.1", - "libc", - "windows-sys 0.45.0", + "autocfg", + "hashbrown 0.12.3", ] [[package]] -name = "iovec" -version = "0.1.4" +name = "indexmap" +version = "2.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ - "libc", + "equivalent", + "hashbrown 0.14.5", ] [[package]] -name = "ipconfig" -version = "0.1.9" +name = "io-lifetimes" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f7eadeaf4b52700de180d147c4805f199854600b36faa963d91114827b2ffc" +checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220" dependencies = [ - "error-chain", - "socket2 0.3.19", - "widestring", - "winapi 0.3.9", - "winreg", + "hermit-abi 0.3.1", + "libc", + "windows-sys 0.48.0", ] [[package]] name = "is-terminal" -version = "0.4.5" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8687c819457e979cc940d09cb16e42a1bf70aa6b60a549de6d3a62a0ee90c69e" +checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" dependencies = [ "hermit-abi 0.3.1", "io-lifetimes", "rustix", - "windows-sys 0.45.0", + "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.6" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" +checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754" [[package]] -name = "js-sys" -version = "0.3.61" +name = "jobserver" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" +checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" dependencies = [ - "wasm-bindgen", + "libc", ] [[package]] -name = "kernel32-sys" -version = "0.2.2" +name = "js-sys" +version = "0.3.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +checksum = "258451ab10b34f8af53416d1fdab72c22e805f0c92a1136d59470ec0b11138b2" dependencies = [ - "winapi 0.2.8", - "winapi-build", + "wasm-bindgen", ] [[package]] name = "language-tags" -version = "0.2.2" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" +checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388" [[package]] name = "lazy_static" @@ -1211,66 +949,43 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" -[[package]] -name = "lazycell" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" - [[package]] name = "libc" -version = "0.2.140" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c" - -[[package]] -name = "link-cplusplus" -version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5" -dependencies = [ - "cc", -] - -[[package]] -name = "linked-hash-map" -version = "0.5.6" +version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "linux-raw-sys" -version = "0.1.4" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" +checksum = "d59d8c75012853d2e872fb56bc8a2e53718e2cafe1a4c823143141c6d90c322f" [[package]] -name = "lock_api" +name = "local-channel" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" +checksum = "b6cbc85e69b8df4b8bb8b89ec634e7189099cea8927a276b7384ce5488e53ec8" dependencies = [ - "owning_ref", - "scopeguard 0.3.3", + "futures-core", + "futures-sink", + "local-waker", ] [[package]] -name = "lock_api" -version = "0.3.4" +name = "local-waker" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75" -dependencies = [ - "scopeguard 1.1.0", -] +checksum = "4d873d7c67ce09b42110d801813efbc9364414e356be9935700d368351657487" [[package]] name = "lock_api" -version = "0.4.9" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53" dependencies = [ - "autocfg 1.1.0", - "scopeguard 1.1.0", + "autocfg", + "scopeguard", ] [[package]] @@ -1279,16 +994,15 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" dependencies = [ - "log 0.4.17", + "log 0.4.22", ] [[package]] name = "log" -version = "0.4.17" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" dependencies = [ - "cfg-if 1.0.0", "serde", ] @@ -1300,9 +1014,9 @@ checksum = "a94d21414c1f4a51209ad204c1776a3d0765002c76c6abcb602a6f09f1e881c7" [[package]] name = "log4rs" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d36ca1786d9e79b8193a68d480a0907b612f109537115c6ff655a3a1967533fd" +checksum = "0816135ae15bd0391cf284eab37e6e3ee0a6ee63d2ceeb659862bd8d0a984ca6" dependencies = [ "anyhow", "arc-swap", @@ -1311,45 +1025,26 @@ dependencies = [ "fnv", "humantime", "libc", - "log 0.4.17", + "log 0.4.22", "log-mdc", - "parking_lot 0.12.1", + "once_cell", + "parking_lot", + "rand 0.8.5", "serde", "serde-value", "serde_json", - "serde_yaml 0.8.26", + "serde_yaml", "thiserror", "thread-id", "typemap-ors", - "winapi 0.3.9", -] - -[[package]] -name = "lru-cache" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" -dependencies = [ - "linked-hash-map", + "winapi", ] -[[package]] -name = "match_cfg" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" - [[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" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" +checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" [[package]] name = "memchr" @@ -1357,20 +1052,11 @@ version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" -[[package]] -name = "memoffset" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa" -dependencies = [ - "autocfg 1.1.0", -] - [[package]] name = "mime" -version = "0.3.17" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" [[package]] name = "mime_guess" @@ -1384,65 +1070,23 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.6.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" +checksum = "6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc" 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.17", - "miow", - "net2", - "slab", - "winapi 0.2.8", -] - -[[package]] -name = "mio" -version = "0.8.6" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" +checksum = "57ee1c23c7c63b0c9250c339ffdc69255f110b298b901b9f6c82547b7b87caaf" dependencies = [ "libc", - "log 0.4.17", + "log 0.4.22", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.45.0", -] - -[[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", + "windows-sys 0.36.1", ] [[package]] @@ -1451,39 +1095,14 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" dependencies = [ - "getrandom 0.2.8", -] - -[[package]] -name = "net2" -version = "0.2.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74d0df99cfcd2530b2e694f6e17e7f37b8e26bb23983ac530c0c97408837c631" -dependencies = [ - "cfg-if 0.1.10", - "libc", - "winapi 0.3.9", -] - -[[package]] -name = "nom" -version = "4.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" -dependencies = [ - "memchr", - "version_check 0.1.5", + "getrandom 0.2.15", ] [[package]] -name = "num-integer" -version = "0.1.45" +name = "num-conv" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" -dependencies = [ - "autocfg 1.1.0", - "num-traits", -] +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" [[package]] name = "num-traits" @@ -1491,73 +1110,58 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" dependencies = [ - "autocfg 1.1.0", + "autocfg", ] [[package]] name = "num_cpus" -version = "1.15.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" dependencies = [ - "hermit-abi 0.2.6", + "hermit-abi 0.1.19", "libc", ] -[[package]] -name = "object" -version = "0.30.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea86265d3d3dcb6a27fc51bd29a4bf387fae9d2986b823079d4986af253eb439" -dependencies = [ - "memchr", -] - [[package]] name = "once_cell" -version = "1.17.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" - -[[package]] -name = "opaque-debug" -version = "0.3.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "opcua" version = "0.12.0" dependencies = [ + "actix-files", "actix-web", "base64 0.21.0", - "bitflags", + "bitflags 1.3.2", "byteorder", - "bytes 1.4.0", + "bytes", "chrono", "derivative", "env_logger", "foreign-types", - "futures 0.3.27", + "futures", "gethostname", "lazy_static", "libc", - "log 0.4.17", + "log 0.4.22", "openssl", "openssl-sys", - "parking_lot 0.12.1", + "parking_lot", "regex", "rumqttc 0.20.0", "serde", "serde_derive", "serde_json", - "serde_yaml 0.9.19", + "serde_yaml", "tempdir", - "time", - "tokio 1.26.0", - "tokio-util", - "url", - "uuid 1.3.0", + "tokio", + "tokio-util 0.6.10", + "url 1.7.2", + "uuid", ] [[package]] @@ -1582,11 +1186,12 @@ version = "0.12.0" dependencies = [ "chrono", "lazy_static", - "log 0.4.17", + "log 0.4.22", "log4rs", "opcua", "pico-args", "rand 0.7.3", + "tokio", ] [[package]] @@ -1610,7 +1215,7 @@ name = "opcua-integration" version = "0.12.0" dependencies = [ "chrono", - "log 0.4.17", + "log 0.4.22", "opcua", ] @@ -1636,32 +1241,18 @@ name = "opcua-simple-server" version = "0.12.0" dependencies = [ "chrono", - "log 0.4.17", + "log 0.4.22", "opcua", ] -[[package]] -name = "opcua-web-client" -version = "0.12.0" -dependencies = [ - "actix", - "actix-web", - "opcua", - "pico-args", - "serde", - "serde_derive", - "serde_json", - "tokio 1.26.0", -] - [[package]] name = "openssl" -version = "0.10.48" +version = "0.10.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "518915b97df115dd36109bfa429a48b8f737bd05508cf9588977b599648926d2" +checksum = "618febf65336490dfcf20b73f885f5651a0c89c64c2d4a8c3662585a70bf5bd0" dependencies = [ - "bitflags", - "cfg-if 1.0.0", + "bitflags 1.3.2", + "cfg-if", "foreign-types", "libc", "once_cell", @@ -1675,9 +1266,9 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" dependencies = [ - "proc-macro2 1.0.54", - "quote 1.0.26", - "syn 1.0.109", + "proc-macro2", + "quote", + "syn 1.0.99", ] [[package]] @@ -1688,20 +1279,20 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "111.25.2+1.1.1t" +version = "111.22.0+1.1.1q" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "320708a054ad9b3bf314688b5db87cf4d6683d64cfc835e2337924ae62bf4431" +checksum = "8f31f0d509d1c1ae9cada2f9539ff8f37933831fd5098879e482aa687d659853" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.83" +version = "0.9.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "666416d899cf077260dac8698d60a60b435a46d57e82acb1be3d0dad87284e5b" +checksum = "e5f9bd0c2710541a3cda73d6f9ac4f1b240de4ae261065d309dbe73d9dceb42f" dependencies = [ - "autocfg 1.1.0", + "autocfg", "cc", "libc", "openssl-src", @@ -1718,86 +1309,34 @@ dependencies = [ "num-traits", ] -[[package]] -name = "owning_ref" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff55baddef9e4ad00f88b6c743a2a8062d4c6ade126c2a528644b8e444d52ce" -dependencies = [ - "stable_deref_trait", -] - -[[package]] -name = "parking_lot" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" -dependencies = [ - "lock_api 0.1.5", - "parking_lot_core 0.4.0", -] - -[[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", -] - [[package]] name = "parking_lot" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ - "lock_api 0.4.9", - "parking_lot_core 0.9.7", -] - -[[package]] -name = "parking_lot_core" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" -dependencies = [ - "libc", - "rand 0.6.5", - "rustc_version", - "smallvec 0.6.14", - "winapi 0.3.9", + "lock_api", + "parking_lot_core", ] [[package]] name = "parking_lot_core" -version = "0.6.3" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66b810a62be75176a80873726630147a5ca780cd33921e0b5709033e66b0a" +checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929" dependencies = [ - "cfg-if 0.1.10", - "cloudabi", + "cfg-if", "libc", - "redox_syscall 0.1.57", - "rustc_version", - "smallvec 0.6.14", - "winapi 0.3.9", + "redox_syscall", + "smallvec", + "windows-sys 0.36.1", ] [[package]] -name = "parking_lot_core" -version = "0.9.7" +name = "paste" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "redox_syscall 0.2.16", - "smallvec 1.10.0", - "windows-sys 0.45.0", -] +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "percent-encoding" @@ -1807,9 +1346,9 @@ checksum = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" [[package]] name = "percent-encoding" -version = "2.2.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" +checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" [[package]] name = "pico-args" @@ -1819,22 +1358,22 @@ checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" [[package]] name = "pin-project" -version = "1.0.12" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.0.12" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ - "proc-macro2 1.0.54", - "quote 1.0.26", - "syn 1.0.109", + "proc-macro2", + "quote", + "syn 2.0.71", ] [[package]] @@ -1851,9 +1390,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.26" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" +checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" [[package]] name = "pollster" @@ -1862,62 +1401,33 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5da3b0203fd7ee5720aa0b5e790b591aa5d3f41c3ed2c34a3a393382198af2f7" [[package]] -name = "polyval" -version = "0.4.5" +name = "powerfmt" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eebcc4aa140b9abd2bc40d9c3f7ccec842679cd79045ac3a7ac698c1a064b7cd" -dependencies = [ - "cpuid-bool", - "opaque-debug", - "universal-hash", -] +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" - -[[package]] -name = "proc-macro2" -version = "0.4.30" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" -dependencies = [ - "unicode-xid 0.1.0", -] +checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" [[package]] name = "proc-macro2" -version = "1.0.54" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e472a104799c74b514a57226160104aa483546de37e839ec50e3c2e41dd87534" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] -[[package]] -name = "quick-error" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" - -[[package]] -name = "quote" -version = "0.6.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" -dependencies = [ - "proc-macro2 0.4.30", -] - [[package]] name = "quote" -version = "1.0.26" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ - "proc-macro2 1.0.54", + "proc-macro2", ] [[package]] @@ -1929,40 +1439,8 @@ dependencies = [ "fuchsia-cprng", "libc", "rand_core 0.3.1", - "rdrand", - "winapi 0.3.9", -] - -[[package]] -name = "rand" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c618c47cd3ebd209790115ab837de41425723956ad3ce2e6a7f09890947cacb9" -dependencies = [ - "cloudabi", - "fuchsia-cprng", - "libc", - "rand_core 0.3.1", - "winapi 0.3.9", -] - -[[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 0.1.0", - "rand_isaac", - "rand_jitter", - "rand_os", - "rand_pcg", - "rand_xorshift", - "winapi 0.3.9", + "rdrand", + "winapi", ] [[package]] @@ -1975,7 +1453,7 @@ dependencies = [ "libc", "rand_chacha 0.2.2", "rand_core 0.5.1", - "rand_hc 0.2.0", + "rand_hc", ] [[package]] @@ -1986,17 +1464,7 @@ checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", "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", + "rand_core 0.6.3", ] [[package]] @@ -2016,7 +1484,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core 0.6.4", + "rand_core 0.6.3", ] [[package]] @@ -2045,20 +1513,11 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.8", -] - -[[package]] -name = "rand_hc" -version = "0.1.0" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" +checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" dependencies = [ - "rand_core 0.3.1", + "getrandom 0.2.15", ] [[package]] @@ -2070,59 +1529,6 @@ dependencies = [ "rand_core 0.5.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" @@ -2132,19 +1538,13 @@ 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" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" dependencies = [ - "bitflags", + "bitflags 1.3.2", ] [[package]] @@ -2158,6 +1558,12 @@ dependencies = [ "regex-syntax", ] +[[package]] +name = "regex-lite" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a" + [[package]] name = "regex-syntax" version = "0.6.29" @@ -2170,17 +1576,7 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" dependencies = [ - "winapi 0.3.9", -] - -[[package]] -name = "resolv-conf" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11834e137f3b14e309437a8276714eed3a80d1ef894869e510f2c0c0b98b9f4a" -dependencies = [ - "hostname", - "quick-error", + "winapi", ] [[package]] @@ -2193,9 +1589,24 @@ dependencies = [ "libc", "once_cell", "spin 0.5.2", - "untrusted", + "untrusted 0.7.1", "web-sys", - "winapi 0.3.9", + "winapi", +] + +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.15", + "libc", + "spin 0.9.8", + "untrusted 0.9.0", + "windows-sys 0.52.0", ] [[package]] @@ -2204,16 +1615,16 @@ version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "499b7ab08ffa5a722958b6ce1b7c0270bea30909f589d12c5ec3a051afe423fc" dependencies = [ - "bytes 1.4.0", + "bytes", "flume", - "futures 0.3.27", - "http 0.2.9", - "log 0.4.17", + "futures", + "http", + "log 0.4.22", "pollster", "rustls-native-certs", "rustls-pemfile 0.3.0", "thiserror", - "tokio 1.26.0", + "tokio", "tokio-rustls", ] @@ -2223,67 +1634,61 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b616bf8b706c2a6235604f5d93f9578c37d0c6161e13898b68a1da4af2d812c" dependencies = [ - "bytes 1.4.0", + "bytes", "flume", - "futures 0.3.27", - "log 0.4.17", + "futures", + "log 0.4.22", "pollster", "rustls-native-certs", - "rustls-pemfile 1.0.2", + "rustls-pemfile 1.0.4", "thiserror", - "tokio 1.26.0", + "tokio", "tokio-rustls", ] -[[package]] -name = "rustc-demangle" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4a36c42d1873f9a77c53bde094f9664d9891bc604a45b4798fd2c389ed12e5b" - [[package]] name = "rustc_version" -version = "0.2.3" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ "semver", ] [[package]] name = "rustix" -version = "0.36.11" +version = "0.37.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db4165c9963ab29e422d6c26fbc1d37f15bace6b2810221f9d925023480fcf0e" +checksum = "85597d61f83914ddeba6a47b3b8ffe7365107221c2e557ed94426489fefb5f77" dependencies = [ - "bitflags", + "bitflags 1.3.2", "errno", "io-lifetimes", "libc", "linux-raw-sys", - "windows-sys 0.45.0", + "windows-sys 0.48.0", ] [[package]] name = "rustls" -version = "0.20.8" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f" +checksum = "1b80e3dec595989ea8510028f30c408a4630db12c9cbb8de34203b89d6577e99" dependencies = [ - "log 0.4.17", - "ring", + "log 0.4.22", + "ring 0.16.20", "sct", "webpki", ] [[package]] name = "rustls-native-certs" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0167bac7a9f490495f3c33013e7722b53cb087ecbe082fb0c6387c96f634ea50" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" dependencies = [ "openssl-probe", - "rustls-pemfile 1.0.2", + "rustls-pemfile 1.0.4", "schannel", "security-framework", ] @@ -2294,68 +1699,57 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ee86d63972a7c661d1536fefe8c3c8407321c3df668891286de28abcd087360" dependencies = [ - "base64 0.13.1", + "base64 0.13.0", ] [[package]] name = "rustls-pemfile" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ "base64 0.21.0", ] [[package]] name = "ryu" -version = "1.0.13" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" +checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" [[package]] name = "schannel" -version = "0.1.21" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" +checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2" dependencies = [ - "windows-sys 0.42.0", + "lazy_static", + "windows-sys 0.36.1", ] -[[package]] -name = "scopeguard" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" - [[package]] name = "scopeguard" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" -[[package]] -name = "scratch" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1792db035ce95be60c3f8853017b3999209281c24e2ba5bc8e59bf97a0c590c1" - [[package]] name = "sct" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring", - "untrusted", + "ring 0.17.8", + "untrusted 0.9.0", ] [[package]] name = "security-framework" -version = "2.8.2" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a332be01508d814fed64bf28f798a146d73792121129962fdf335bb3c49a4254" +checksum = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc" dependencies = [ - "bitflags", + "bitflags 1.3.2", "core-foundation", "core-foundation-sys", "libc", @@ -2364,9 +1758,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.8.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31c9bb296072e961fcbd8853511dd39c2d8be2deb1e17c6860b1d30732b323b4" +checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" dependencies = [ "core-foundation-sys", "libc", @@ -2374,24 +1768,15 @@ dependencies = [ [[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-parser" -version = "0.7.0" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.158" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9" +checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" dependencies = [ "serde_derive", ] @@ -2408,58 +1793,46 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.158" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad" +checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" dependencies = [ - "proc-macro2 1.0.54", - "quote 1.0.26", - "syn 2.0.10", + "proc-macro2", + "quote", + "syn 2.0.71", ] [[package]] name = "serde_json" -version = "1.0.94" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea" +checksum = "38dd04e3c8279e75b31ef29dbdceebfe5ad89f4d0937213c53f7d49d01b3d5a7" dependencies = [ - "itoa 1.0.6", + "itoa", "ryu", "serde", ] [[package]] name = "serde_urlencoded" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "642dd69105886af2efd227f75a520ec9b44a820d65bc133a9131f7d229fd165a" -dependencies = [ - "dtoa", - "itoa 0.4.8", - "serde", - "url", -] - -[[package]] -name = "serde_yaml" -version = "0.8.26" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ - "indexmap", + "form_urlencoded", + "itoa", "ryu", "serde", - "yaml-rust", ] [[package]] name = "serde_yaml" -version = "0.9.19" +version = "0.9.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f82e6c8c047aa50a7328632d067bcae6ef38772a79e28daf32f735e0e4f3dd10" +checksum = "d9d684e3ec7de3bf5466b32bd75303ac16f0736426e5a4e0d6e489559ce1249c" dependencies = [ - "indexmap", - "itoa 1.0.6", + "indexmap 1.9.1", + "itoa", "ryu", "serde", "unsafe-libyaml", @@ -2467,482 +1840,231 @@ dependencies = [ [[package]] name = "sha1" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1da05c97445caa12d05e848c4a4fcbbea29e748ac28f7e80e9b010392063770" -dependencies = [ - "sha1_smol", -] - -[[package]] -name = "sha1_smol" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" - -[[package]] -name = "sha2" -version = "0.9.9" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ - "block-buffer", - "cfg-if 1.0.0", + "cfg-if", "cpufeatures", "digest", - "opaque-debug", ] [[package]] name = "signal-hook-registry" -version = "1.4.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" dependencies = [ "libc", ] [[package]] name = "slab" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" -dependencies = [ - "autocfg 1.1.0", -] - -[[package]] -name = "smallvec" -version = "0.6.14" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97fcaeba89edba30f044a10c6a3cc39df9c3f17d7cd829dd1446cab35f890e0" +checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" dependencies = [ - "maybe-uninit", + "autocfg", ] [[package]] name = "smallvec" -version = "1.10.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" +checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1" [[package]] name = "socket2" -version = "0.3.19" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" dependencies = [ - "cfg-if 1.0.0", "libc", - "winapi 0.3.9", + "winapi", ] [[package]] name = "socket2" -version = "0.4.9" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ - "libc", - "winapi 0.3.9", -] - -[[package]] -name = "spin" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" - -[[package]] -name = "spin" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5d6e0250b93c8427a177b849d144a96d5acc57006149479403d7861ab721e34" -dependencies = [ - "lock_api 0.4.9", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - -[[package]] -name = "string" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d" -dependencies = [ - "bytes 0.4.12", -] - -[[package]] -name = "subtle" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" - -[[package]] -name = "syn" -version = "0.15.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" -dependencies = [ - "proc-macro2 0.4.30", - "quote 0.6.13", - "unicode-xid 0.1.0", -] - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2 1.0.54", - "quote 1.0.26", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aad1363ed6d37b84299588d62d3a7d95b5a5c2d9aad5c85609fda12afaa1f40" -dependencies = [ - "proc-macro2 1.0.54", - "quote 1.0.26", - "unicode-ident", -] - -[[package]] -name = "synstructure" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" -dependencies = [ - "proc-macro2 1.0.54", - "quote 1.0.26", - "syn 1.0.109", - "unicode-xid 0.2.4", -] - -[[package]] -name = "tempdir" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8" -dependencies = [ - "rand 0.4.6", - "remove_dir_all", -] - -[[package]] -name = "termcolor" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "thiserror" -version = "1.0.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" -dependencies = [ - "proc-macro2 1.0.54", - "quote 1.0.26", - "syn 2.0.10", -] - -[[package]] -name = "thread-id" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fdfe0627923f7411a43ec9ec9c39c3a9b4151be313e0922042581fb6c9b717f" -dependencies = [ - "libc", - "redox_syscall 0.2.16", - "winapi 0.3.9", -] - -[[package]] -name = "time" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" -dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi 0.3.9", -] - -[[package]] -name = "tinyvec" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -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 = "1.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03201d01c3c27a29c8a5cee5b55a93ddae1ccf6f08f65365c2c918f8c1b76f64" -dependencies = [ - "autocfg 1.1.0", - "bytes 1.4.0", - "libc", - "memchr", - "mio 0.8.6", - "num_cpus", - "parking_lot 0.12.1", - "pin-project-lite", - "signal-hook-registry", - "socket2 0.4.9", - "tokio-macros", - "windows-sys 0.45.0", + "libc", + "windows-sys 0.52.0", ] [[package]] -name = "tokio-codec" -version = "0.1.2" +name = "spin" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25b2998660ba0e70d18684de5d06b70b70a3a747469af9dea7618cc59e75976b" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "tokio-io", -] +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] -name = "tokio-current-thread" -version = "0.1.7" +name = "spin" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1de0e32a83f131e002238d7ccde18211c0a5397f60cbfffcb112868c2e0e20e" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" dependencies = [ - "futures 0.1.31", - "tokio-executor", + "lock_api", ] [[package]] -name = "tokio-executor" -version = "0.1.10" +name = "syn" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb2d1b8f4548dbf5e1f7818512e9c406860678f29c300cdf0ebac72d1a3a1671" +checksum = "58dbef6ec655055e20b86b15a8cc6d439cca19b667537ac6a1369572d151ab13" dependencies = [ - "crossbeam-utils 0.7.2", - "futures 0.1.31", + "proc-macro2", + "quote", + "unicode-ident", ] [[package]] -name = "tokio-fs" -version = "0.1.7" +name = "syn" +version = "2.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "297a1206e0ca6302a0eed35b700d292b275256f596e2f3fea7729d5e629b6ff4" +checksum = "b146dcf730474b4bcd16c311627b31ede9ab149045db4d6088b3becaea046462" dependencies = [ - "futures 0.1.31", - "tokio-io", - "tokio-threadpool", + "proc-macro2", + "quote", + "unicode-ident", ] [[package]] -name = "tokio-io" -version = "0.1.13" +name = "tempdir" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674" +checksum = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8" dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "log 0.4.17", + "rand 0.4.6", + "remove_dir_all", ] [[package]] -name = "tokio-macros" -version = "1.8.2" +name = "termcolor" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8" +checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" dependencies = [ - "proc-macro2 1.0.54", - "quote 1.0.26", - "syn 1.0.109", + "winapi-util", ] [[package]] -name = "tokio-reactor" -version = "0.1.12" +name = "thiserror" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09bc590ec4ba8ba87652da2068d150dcada2cfa2e07faae270a5e0409aa51351" +checksum = "f5f6586b7f764adc0231f4c79be7b920e766bb2f3e51b3661cdb263828f19994" dependencies = [ - "crossbeam-utils 0.7.2", - "futures 0.1.31", - "lazy_static", - "log 0.4.17", - "mio 0.6.23", - "num_cpus", - "parking_lot 0.9.0", - "slab", - "tokio-executor", - "tokio-io", - "tokio-sync", + "thiserror-impl", ] [[package]] -name = "tokio-rustls" -version = "0.23.4" +name = "thiserror-impl" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" +checksum = "12bafc5b54507e0149cdf1b145a5d80ab80a90bcd9275df43d4fff68460f6c21" dependencies = [ - "rustls", - "tokio 1.26.0", - "webpki", + "proc-macro2", + "quote", + "syn 1.0.99", ] [[package]] -name = "tokio-signal" -version = "0.2.9" +name = "thread-id" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0c34c6e548f101053321cba3da7cbb87a610b85555884c41b07da2eb91aff12" +checksum = "5fdfe0627923f7411a43ec9ec9c39c3a9b4151be313e0922042581fb6c9b717f" dependencies = [ - "futures 0.1.31", "libc", - "mio 0.6.23", - "mio-uds", - "signal-hook-registry", - "tokio-executor", - "tokio-io", - "tokio-reactor", - "winapi 0.3.9", + "redox_syscall", + "winapi", ] [[package]] -name = "tokio-sync" -version = "0.1.8" +name = "time" +version = "0.3.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edfe50152bc8164fcc456dab7891fa9bf8beaf01c5ee7e1dd43a397c3cf87dee" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" dependencies = [ - "fnv", - "futures 0.1.31", + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", ] [[package]] -name = "tokio-tcp" -version = "0.1.4" +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98df18ed66e3b72e742f185882a9e201892407957e45fbff8da17ae7a7c51f72" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "iovec", - "mio 0.6.23", - "tokio-io", - "tokio-reactor", + "num-conv", + "time-core", ] [[package]] -name = "tokio-threadpool" -version = "0.1.18" +name = "tinyvec" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df720b6581784c118f0eb4310796b12b1d242a7eb95f716a8367855325c25f89" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" dependencies = [ - "crossbeam-deque", - "crossbeam-queue", - "crossbeam-utils 0.7.2", - "futures 0.1.31", - "lazy_static", - "log 0.4.17", - "num_cpus", - "slab", - "tokio-executor", + "tinyvec_macros", ] [[package]] -name = "tokio-timer" -version = "0.2.13" +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" + +[[package]] +name = "tokio" +version = "1.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93044f2d313c95ff1cb7809ce9a7a05735b012288a888b62d4434fd58c94f296" +checksum = "94d7b1cfd2aa4011f2de74c2c4c63665e27a71006b0a192dcd2710272e73dfa2" dependencies = [ - "crossbeam-utils 0.7.2", - "futures 0.1.31", - "slab", - "tokio-executor", + "autocfg", + "bytes", + "libc", + "mio", + "num_cpus", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2 0.4.10", + "tokio-macros", + "windows-sys 0.48.0", ] [[package]] -name = "tokio-udp" -version = "0.1.6" +name = "tokio-macros" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2a0b10e610b39c38b031a2fcab08e4b82f16ece36504988dcbd81dbba650d82" +checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "log 0.4.17", - "mio 0.6.23", - "tokio-codec", - "tokio-io", - "tokio-reactor", + "proc-macro2", + "quote", + "syn 2.0.71", ] [[package]] -name = "tokio-uds" -version = "0.2.7" +name = "tokio-rustls" +version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab57a4ac4111c8c9dbcf70779f6fc8bc35ae4b2454809febac840ad19bd7e4e0" +checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "iovec", - "libc", - "log 0.4.17", - "mio 0.6.23", - "mio-uds", - "tokio-codec", - "tokio-io", - "tokio-reactor", + "rustls", + "tokio", + "webpki", ] [[package]] @@ -2951,88 +2073,46 @@ version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" dependencies = [ - "bytes 1.4.0", + "bytes", "futures-core", "futures-sink", - "log 0.4.17", + "log 0.4.22", "pin-project-lite", - "tokio 1.26.0", + "tokio", ] [[package]] -name = "tower-service" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b32f72af77f1bfe3d3d4da8516a238ebe7039b51dd8637a09841ac7f16d2c987" -dependencies = [ - "futures 0.1.31", -] - -[[package]] -name = "trust-dns-proto" -version = "0.5.0" +name = "tokio-util" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0838272e89f1c693b4df38dc353412e389cf548ceed6f9fd1af5a8d6e0e7cf74" +checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" dependencies = [ - "byteorder", - "failure", - "futures 0.1.31", - "idna", - "lazy_static", - "log 0.4.17", - "rand 0.5.6", - "smallvec 0.6.14", - "socket2 0.3.19", - "tokio-executor", - "tokio-io", - "tokio-reactor", - "tokio-tcp", - "tokio-timer", - "tokio-udp", - "url", + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", ] [[package]] -name = "trust-dns-proto" -version = "0.6.3" +name = "tracing" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09144f0992b0870fa8d2972cc069cbf1e3c0fda64d1f3d45c4d68d0e0b52ad4e" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "byteorder", - "failure", - "futures 0.1.31", - "idna", - "lazy_static", - "log 0.4.17", - "rand 0.5.6", - "smallvec 0.6.14", - "socket2 0.3.19", - "tokio-executor", - "tokio-io", - "tokio-reactor", - "tokio-tcp", - "tokio-timer", - "tokio-udp", - "url", + "log 0.4.22", + "pin-project-lite", + "tracing-core", ] [[package]] -name = "trust-dns-resolver" -version = "0.10.3" +name = "tracing-core" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9f877f7a1ad821ab350505e1f1b146a4960402991787191d6d8cab2ce2de2c" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ - "cfg-if 0.1.10", - "failure", - "futures 0.1.31", - "ipconfig", - "lazy_static", - "log 0.4.17", - "lru-cache", - "resolv-conf", - "smallvec 0.6.14", - "tokio 0.1.22", - "trust-dns-proto 0.6.3", + "once_cell", ] [[package]] @@ -3046,15 +2126,15 @@ dependencies = [ [[package]] name = "typenum" -version = "1.16.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" [[package]] name = "uci" -version = "0.1.3" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9705b2de483a94b19d1aa8fd1519914a782977d5a0f8a896d2ca558e2255ee0" +checksum = "e6ae4b39dbf542ea3e478abdef55e9b6edcce7d3d45e06150aba21a7179d172b" dependencies = [ "log 0.3.9", ] @@ -3065,58 +2145,30 @@ version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" dependencies = [ - "version_check 0.9.4", + "version_check", ] [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" [[package]] name = "unicode-ident" -version = "1.0.8" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" +checksum = "c4f5b37a154999a8f3f98cc23a628d850e154479cd94decf3414696e12e31aaf" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "854cbdc4f7bc6ae19c820d44abdc3277ac3e1b2b93db20a636825d9322fb60e6" dependencies = [ "tinyvec", ] -[[package]] -name = "unicode-width" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" - -[[package]] -name = "unicode-xid" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" - -[[package]] -name = "unicode-xid" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" - -[[package]] -name = "universal-hash" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05" -dependencies = [ - "generic-array", - "subtle", -] - [[package]] name = "unsafe-any-ors" version = "1.0.0" @@ -3128,9 +2180,9 @@ dependencies = [ [[package]] name = "unsafe-libyaml" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad2024452afd3874bf539695e04af6732ba06517424dbf958fdb16a01f3bef6c" +checksum = "1865806a559042e51ab5414598446a5871b561d21b6764f2eabb0dd481d880a6" [[package]] name = "untrusted" @@ -3138,66 +2190,48 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + [[package]] name = "url" version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" dependencies = [ - "encoding", - "idna", + "idna 0.1.5", "matches", "percent-encoding 1.0.1", ] [[package]] -name = "uuid" -version = "0.7.4" +name = "url" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a" +checksum = "22fe195a4f217c25b25cb5058ced57059824a678474874038dc88d211bf508d3" dependencies = [ - "rand 0.6.5", + "form_urlencoded", + "idna 0.2.3", + "percent-encoding 2.1.0", ] [[package]] name = "uuid" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79" -dependencies = [ - "getrandom 0.2.8", -] - -[[package]] -name = "v_escape" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "660b101c07b5d0863deb9e7fb3138777e858d6d2a79f9e6049a27d1cc77c6da6" -dependencies = [ - "v_escape_derive", -] - -[[package]] -name = "v_escape_derive" -version = "0.5.6" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2ca2a14bc3fc5b64d188b087a7d3a927df87b152e941ccfbc66672e20c467ae" +checksum = "5b55a3fef2a1e3b3a00ce878640918820d3c51081576ac657d23af9fc7928fdb" dependencies = [ - "nom", - "proc-macro2 1.0.54", - "quote 1.0.26", - "syn 1.0.109", + "getrandom 0.2.15", ] [[package]] name = "v_htmlescape" -version = "0.4.5" +version = "0.15.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33e939c0d8cf047514fb6ba7d5aac78bc56677a6938b2ee67000b91f2e97e41" -dependencies = [ - "cfg-if 0.1.10", - "v_escape", -] +checksum = "4e8257fbc510f0a46eb602c10215901938b5c2a7d5e70fc11483b1d3c9b5b18c" [[package]] name = "vcpkg" @@ -3205,12 +2239,6 @@ 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" @@ -3223,12 +2251,6 @@ version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -3237,63 +2259,63 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.84" +version = "0.2.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" +checksum = "fc7652e3f6c4706c8d9cd54832c4a4ccb9b5336e2c3bd154d5cccfbf1c1f5f7d" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.84" +version = "0.2.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" +checksum = "662cd44805586bd52971b9586b1df85cdbbd9112e4ef4d8f41559c334dc6ac3f" dependencies = [ "bumpalo", - "log 0.4.17", + "log 0.4.22", "once_cell", - "proc-macro2 1.0.54", - "quote 1.0.26", - "syn 1.0.109", + "proc-macro2", + "quote", + "syn 1.0.99", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.84" +version = "0.2.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" +checksum = "b260f13d3012071dfb1512849c033b1925038373aea48ced3012c09df952c602" dependencies = [ - "quote 1.0.26", + "quote", "wasm-bindgen-macro-support", ] [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.84" +version = "0.2.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" +checksum = "5be8e654bdd9b79216c2929ab90721aa82faf65c48cdf08bdc4e7f51357b80da" dependencies = [ - "proc-macro2 1.0.54", - "quote 1.0.26", - "syn 1.0.109", + "proc-macro2", + "quote", + "syn 1.0.99", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.84" +version = "0.2.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" +checksum = "6598dd0bd3c7d51095ff6531a5b23e02acdc81804e30d8f07afb77b7215a140a" [[package]] name = "web-sys" -version = "0.3.61" +version = "0.3.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" +checksum = "ed055ab27f941423197eb86b2035720b1a3ce40504df082cac2ecc6ed73335a1" dependencies = [ "js-sys", "wasm-bindgen", @@ -3301,26 +2323,14 @@ dependencies = [ [[package]] name = "webpki" -version = "0.22.0" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" +checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53" dependencies = [ - "ring", - "untrusted", + "ring 0.17.8", + "untrusted 0.9.0", ] -[[package]] -name = "widestring" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7157704c2e12e3d2189c507b7482c52820a16dfa4465ba91add92f266667cadb" - -[[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" @@ -3331,12 +2341,6 @@ 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" @@ -3349,7 +2353,7 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" dependencies = [ - "winapi 0.3.9", + "winapi", ] [[package]] @@ -3364,61 +2368,75 @@ version = "0.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04662ed0e3e5630dfa9b26e4cb823b817f1a9addda855d973a9458c236556244" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "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" -version = "0.46.0" +name = "windows-sys" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdacb41e6a96a052c6cb63a144f24900236121c6f63f4f8219fef5977ecb0c25" +checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" dependencies = [ - "windows-targets", + "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", ] [[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", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows-targets 0.48.0", ] [[package]] name = "windows-sys" -version = "0.45.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets", + "windows-targets 0.52.6", ] [[package]] name = "windows-targets" -version = "0.42.2" +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-targets" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -3427,36 +2445,144 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" + [[package]] name = "windows_aarch64_msvc" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" + [[package]] name = "windows_i686_gnu" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" +[[package]] +name = "windows_i686_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" + [[package]] name = "windows_i686_msvc" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" +[[package]] +name = "windows_i686_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" + [[package]] name = "windows_x86_64_gnu" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" 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_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + [[package]] name = "windows_x86_64_gnullvm" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" + [[package]] name = "windows_x86_64_msvc" version = "0.42.2" @@ -3464,29 +2590,61 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] -name = "winreg" -version = "0.5.1" +name = "windows_x86_64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "zstd" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a27a759395c1195c4cc5cda607ef6f8f6498f64e78f7900f5de0a127a424704a" +checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9" dependencies = [ - "winapi 0.3.9", + "zstd-safe", ] [[package]] -name = "ws2_32-sys" -version = "0.2.1" +name = "zstd-safe" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" +checksum = "fa556e971e7b568dc775c136fc9de8c779b1c2fc3a63defaafadffdbd3181afa" dependencies = [ - "winapi 0.2.8", - "winapi-build", + "zstd-sys", ] [[package]] -name = "yaml-rust" -version = "0.4.5" +name = "zstd-sys" +version = "2.0.12+zstd.1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" +checksum = "0a4e40c320c3cb459d9a9ff6de98cff88f4751ee9275d140e2be94a2b74e4c13" dependencies = [ - "linked-hash-map", + "cc", + "pkg-config", ] diff --git a/Cargo.toml b/Cargo.toml index 982d758ef..c3d7e8893 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,7 +15,9 @@ members = [ "samples/simple-server", "samples/chess-server", "samples/discovery-client", - "samples/web-client", + ## TODO: rollback when actix-web is upgraded in upstream + ## https://github.com/locka99/opcua/issues/291 + # "samples/web-client", "samples/event-client", "tools/certificate-creator" ] diff --git a/integration/src/harness.rs b/integration/src/harness.rs index 4b8614f09..25d46d906 100644 --- a/integration/src/harness.rs +++ b/integration/src/harness.rs @@ -1,3 +1,4 @@ +use std::time::Instant; use std::{ path::PathBuf, sync::{ @@ -9,7 +10,6 @@ use std::{ thread, time, }; -use chrono::Utc; use log::*; use opcua::{ @@ -450,7 +450,7 @@ pub fn perform_test( (server_thread, tx_server_command, rx_server_response) }; - let start_time = Utc::now(); + let start_time = Instant::now(); let timeout = TEST_TIMEOUT; @@ -462,13 +462,13 @@ pub fn perform_test( // Loop until either the client or the server has quit, or the timeout limit is reached while !client_has_finished || !server_has_finished { // Timeout test - let now = Utc::now(); - let elapsed = now.signed_duration_since(start_time.clone()); - if elapsed.num_milliseconds() > timeout { + let now = Instant::now(); + let elapsed = now.duration_since(start_time.clone()); + if elapsed.as_millis() > timeout as u128 { let _ = tx_client_command.send(ClientCommand::Quit); let _ = tx_server_command.send(ServerCommand::Quit); - error!("Test timed out after {} ms", elapsed.num_milliseconds()); + error!("Test timed out after {} ms", elapsed.as_millis()); error!("Running components:\n {}", { let components = runtime_components!(); components diff --git a/lib/Cargo.toml b/lib/Cargo.toml index 46bfcb489..a519e543b 100644 --- a/lib/Cargo.toml +++ b/lib/Cargo.toml @@ -39,7 +39,7 @@ discovery-server-registration = ["client"] # OpenSSL can be compiled and statically linked to with this feature vendored-openssl = ["openssl/vendored"] # Servers might want to show a web server with metric / diagnostic info -http = ["actix-web"] +http = ["actix-files", "actix-web"] [dependencies] log = "0.4" @@ -57,7 +57,6 @@ serde_yaml = "0.9" serde_json = { version = "1.0", features = ["arbitrary_precision"] } bytes = "1.3" url = "1.6" -time = "0.1" bitflags = "1.3" derivative = "2.2" byteorder = "1.4" @@ -78,7 +77,11 @@ version = "0.10" optional = true [dependencies.actix-web] -version = "0.7" +version = "4.4" +optional = true + +[dependencies.actix-files] +version = "0.6" optional = true [dev-dependencies] diff --git a/lib/src/client/client.rs b/lib/src/client/client.rs index ecb9fc97e..38d4ae32f 100644 --- a/lib/src/client/client.rs +++ b/lib/src/client/client.rs @@ -495,11 +495,11 @@ impl Client { let result = session.get_endpoints()?; session.disconnect(); dispose_session(session); - + Ok(result) } } - + /// Connects to a discovery server and asks the server for a list of /// available server [`ApplicationDescription`]. /// @@ -765,7 +765,7 @@ fn dispose_session(session: Session) { match Handle::try_current() { Ok(handle) => { handle.spawn_blocking(move || drop(session)); - }, + } Err(_) => drop(session), } -} \ No newline at end of file +} diff --git a/lib/src/client/comms/tcp_transport.rs b/lib/src/client/comms/tcp_transport.rs index 61c8efab9..851d0e656 100644 --- a/lib/src/client/comms/tcp_transport.rs +++ b/lib/src/client/comms/tcp_transport.rs @@ -12,7 +12,7 @@ use std::{ net::{SocketAddr, ToSocketAddrs}, result::Result, sync::Arc, - thread, + thread, time, }; use futures::StreamExt; @@ -21,7 +21,6 @@ use tokio::{ io::{AsyncWriteExt, ReadHalf, WriteHalf}, net::TcpStream, sync::mpsc::UnboundedReceiver, - time::Duration, }; use tokio_util::codec::FramedRead; @@ -315,9 +314,14 @@ impl TcpTransport { /// Connects the stream to the specified endpoint pub fn connect(&self, endpoint_url: &str) -> Result<(), StatusCode> { - debug_assert!(!self.is_connected(), "Should not try to connect when already connected"); - let (host, port) = - hostname_port_from_url(endpoint_url, crate::core::constants::DEFAULT_OPC_UA_SERVER_PORT)?; + debug_assert!( + !self.is_connected(), + "Should not try to connect when already connected" + ); + let (host, port) = hostname_port_from_url( + endpoint_url, + crate::core::constants::DEFAULT_OPC_UA_SERVER_PORT, + )?; // Resolve the host name into a socket address let addr = { @@ -343,17 +347,14 @@ impl TcpTransport { assert_eq!(addr.port(), port); let endpoint_url = endpoint_url.to_string(); - let (connection_state, - session_state, - secure_channel, - message_queue, - ) = (self.connection_state.clone(), - self.session_state.clone(), - self.secure_channel.clone(), - self.message_queue.clone(), ); + let (connection_state, session_state, secure_channel, message_queue) = ( + self.connection_state.clone(), + self.session_state.clone(), + self.secure_channel.clone(), + self.message_queue.clone(), + ); - let (connection_status_sender, - connection_status_receiver) = std::sync::mpsc::channel(); + let (connection_status_sender, connection_status_receiver) = std::sync::mpsc::channel(); let conn_task = Self::connection_task( addr, connection_state.clone(), @@ -366,16 +367,29 @@ impl TcpTransport { thread::spawn(move || { trace_lock!(runtime).block_on(async move { let conn_result = conn_task.await; - let mut status = conn_result.as_ref().err().copied().unwrap_or(StatusCode::Good); - let _ = connection_status_sender.send(if status.is_bad() { Err(status) } else { Ok(()) }); + let mut status = conn_result + .as_ref() + .err() + .copied() + .unwrap_or(StatusCode::Good); + let _ = connection_status_sender.send(if status.is_bad() { + Err(status) + } else { + Ok(()) + }); if let Ok((read, write)) = conn_result { - status = Self::spawn_looping_tasks(read, write).await.err().unwrap_or(StatusCode::Good); + status = Self::spawn_looping_tasks(read, write) + .await + .err() + .unwrap_or(StatusCode::Good); } connection_state.set_finished(status); trace_write_lock!(session_state).on_session_closed(status); }); }); - connection_status_receiver.recv().expect("channel should never be dropped here") + connection_status_receiver + .recv() + .expect("channel should never be dropped here") } /// Disconnects the stream from the server (if it is connected) @@ -387,7 +401,7 @@ impl TcpTransport { debug!("Disconnected"); break; } - thread::sleep(Duration::from_millis(Self::WAIT_POLLING_TIMEOUT)) + thread::sleep(time::Duration::from_millis(Self::WAIT_POLLING_TIMEOUT)) } } @@ -445,10 +459,14 @@ impl TcpTransport { (hello, read_state, write_state) }; - write_state.writer.write_all(&hello.encode_to_vec()).await.map_err(|err| { - error!("Cannot send hello to server, err = {:?}", err); - StatusCode::BadCommunicationError - })?; + write_state + .writer + .write_all(&hello.encode_to_vec()) + .await + .map_err(|err| { + error!("Cannot send hello to server, err = {:?}", err); + StatusCode::BadCommunicationError + })?; connection_state.set_state(ConnectionState::WaitingForAck); match read_state.framed_read.next().await { Some(Ok(Message::Acknowledge(ack))) => { @@ -456,7 +474,10 @@ impl TcpTransport { log::trace!("Received acknowledgement: {:?}", ack) } other => { - error!("Unexpected error while waiting for server ACK. Expected ACK, got {:?}", other); + error!( + "Unexpected error while waiting for server ACK. Expected ACK, got {:?}", + other + ); return Err(StatusCode::BadConnectionClosed); } }; @@ -464,14 +485,16 @@ impl TcpTransport { Ok((read_state, write_state)) } - async fn write_bytes_task( - write_state: &mut WriteState, - ) -> Result<(), StatusCode> { + async fn write_bytes_task(write_state: &mut WriteState) -> Result<(), StatusCode> { let bytes_to_write = write_state.send_buffer.bytes_to_write(); - write_state.writer.write_all(&bytes_to_write).await.map_err(|e| { - error!("write bytes task failed: {}", e); - StatusCode::BadCommunicationError - }) + write_state + .writer + .write_all(&bytes_to_write) + .await + .map_err(|e| { + error!("write bytes task failed: {}", e); + StatusCode::BadCommunicationError + }) } async fn spawn_reading_task(mut read_state: ReadState) -> Result<(), StatusCode> { @@ -509,9 +532,9 @@ impl TcpTransport { StatusCode::BadUnexpectedError }; error!( - "Expecting a chunk, got an error message {}", - session_status_code - ); + "Expecting a chunk, got an error message {}", + session_status_code + ); } m => { error!("Expected a recognized message, got {:?}", m); @@ -528,7 +551,10 @@ impl TcpTransport { } } } - debug!("Read loop finished, connection state = {:?}", read_state.state.state()); + debug!( + "Read loop finished, connection state = {:?}", + read_state.state.state() + ); Ok(()) } @@ -544,7 +570,8 @@ impl TcpTransport { } message_queue::Message::SupportedMessage(request) => { trace!("Sending Request: {:?}", request); - let close_connection = matches!(request, SupportedMessage::CloseSecureChannelRequest(_)); + let close_connection = + matches!(request, SupportedMessage::CloseSecureChannelRequest(_)); if close_connection { debug!("Writer is about to send a CloseSecureChannelRequest which means it should close in a moment"); } @@ -554,8 +581,7 @@ impl TcpTransport { write_state.send_request(request)?; // Indicate the request was processed { - let mut message_queue = - trace_write_lock!(write_state.message_queue); + let mut message_queue = trace_write_lock!(write_state.message_queue); message_queue.request_was_processed(request_handle); } Self::write_bytes_task(&mut write_state).await?; @@ -571,7 +597,10 @@ impl TcpTransport { /// This is the main processing loop for the connection. It writes requests and reads responses /// over the socket to the server. - async fn spawn_looping_tasks(read_state: ReadState, write_state: WriteState) -> Result<(), StatusCode> { + async fn spawn_looping_tasks( + read_state: ReadState, + write_state: WriteState, + ) -> Result<(), StatusCode> { log::trace!("Spawning read and write loops"); // Spawn the reading task loop let read_loop = Self::spawn_reading_task(read_state); diff --git a/lib/src/client/message_queue.rs b/lib/src/client/message_queue.rs index c7c3576f1..f11ab10cf 100644 --- a/lib/src/client/message_queue.rs +++ b/lib/src/client/message_queue.rs @@ -40,9 +40,7 @@ impl MessageQueue { } // Creates the transmission queue that outgoing requests will be sent over - pub(crate) fn make_request_channel( - &mut self, - ) -> UnboundedReceiver { + pub(crate) fn make_request_channel(&mut self) -> UnboundedReceiver { let (tx, rx) = mpsc::unbounded_channel(); self.sender = Some(tx.clone()); rx @@ -53,8 +51,9 @@ impl MessageQueue { } fn send_message(&self, message: Message) -> bool { - let sender = self.sender.as_ref() - .expect("MessageQueue::send_message should never be called before make_request_channel"); + let sender = self.sender.as_ref().expect( + "MessageQueue::send_message should never be called before make_request_channel", + ); if sender.is_closed() { error!("Send message will fail because sender has been closed"); false diff --git a/lib/src/client/session/session.rs b/lib/src/client/session/session.rs index 3aefae7a4..ad40da8e1 100644 --- a/lib/src/client/session/session.rs +++ b/lib/src/client/session/session.rs @@ -155,8 +155,8 @@ impl Session { ignore_clock_skew: bool, single_threaded_executor: bool, ) -> Session - where - T: Into, + where + T: Into, { let session_name = session_name.into(); @@ -254,8 +254,8 @@ impl Session { /// * `session_closed_callback` - the session closed callback /// pub fn set_session_closed_callback(&mut self, session_closed_callback: CB) - where - CB: OnSessionClosed + Send + Sync + 'static, + where + CB: OnSessionClosed + Send + Sync + 'static, { let mut session_state = trace_write_lock!(self.session_state); session_state.set_session_closed_callback(session_closed_callback); @@ -269,8 +269,8 @@ impl Session { /// * `connection_status_callback` - the connection status callback. /// pub fn set_connection_status_callback(&mut self, connection_status_callback: CB) - where - CB: OnConnectionStatusChange + Send + Sync + 'static, + where + CB: OnConnectionStatusChange + Send + Sync + 'static, { let mut session_state = trace_write_lock!(self.session_state); session_state.set_connection_status_callback(connection_status_callback); @@ -2402,7 +2402,7 @@ impl AttributeService for Session { // Turn the enums into ExtensionObjects let history_update_details = history_update_details .iter() - .map(|action|ExtensionObject::from(action)) + .map(|action| ExtensionObject::from(action)) .collect::>(); let request = HistoryUpdateRequest { diff --git a/lib/src/client/session/session_state.rs b/lib/src/client/session/session_state.rs index cf6ae4607..6c38d8903 100644 --- a/lib/src/client/session/session_state.rs +++ b/lib/src/client/session/session_state.rs @@ -468,7 +468,7 @@ impl SessionState { { let offset = response.response_header.timestamp - DateTime::now(); - // Make sure to apply the offset to the security token in the current response. + // Make sure to apply the offset to the security token in the current response. security_token.created_at = security_token.created_at - offset; // Update the client offset by adding the new offset. When the secure channel is // renewed its already using the client offset calculated when issuing the secure diff --git a/lib/src/client/session_retry_policy.rs b/lib/src/client/session_retry_policy.rs index ac6e204ea..680572869 100644 --- a/lib/src/client/session_retry_policy.rs +++ b/lib/src/client/session_retry_policy.rs @@ -2,10 +2,10 @@ // SPDX-License-Identifier: MPL-2.0 // Copyright (C) 2017-2022 Adam Lock -use chrono::Duration; - use crate::types::date_time::DateTime; +use chrono::Duration; + #[derive(PartialEq, Debug)] pub enum Answer { /// Retry immediately diff --git a/lib/src/core/comms/tcp_codec.rs b/lib/src/core/comms/tcp_codec.rs index 07d15d50a..21c846f4e 100644 --- a/lib/src/core/comms/tcp_codec.rs +++ b/lib/src/core/comms/tcp_codec.rs @@ -99,9 +99,7 @@ impl TcpCodec { /// Constructs a new TcpCodec. The abort flag is set to terminate the codec even while it is /// waiting for a frame to arrive. pub fn new(decoding_options: DecodingOptions) -> TcpCodec { - TcpCodec { - decoding_options, - } + TcpCodec { decoding_options } } // Writes the encodable thing into the buffer. diff --git a/lib/src/server/http/mod.rs b/lib/src/server/http/mod.rs index 72e63dccc..53bdfb72b 100644 --- a/lib/src/server/http/mod.rs +++ b/lib/src/server/http/mod.rs @@ -2,14 +2,12 @@ // SPDX-License-Identifier: MPL-2.0 // Copyright (C) 2017-2022 Adam Lock -use std::{ - path::PathBuf, - sync::{mpsc, Arc}, - thread, -}; +use std::{path::PathBuf, sync::Arc, thread}; -use actix_web::{actix, fs, http, server, App, HttpRequest, HttpResponse, Responder}; -use tokio::time::{interval_at, Duration, Instant}; +use crate::core::runtime; +use actix_files as fs; +use actix_web::{web, App, HttpResponse, HttpServer, Responder, Result}; +use tokio::runtime::Runtime; use crate::sync::*; @@ -17,17 +15,25 @@ use crate::server::{metrics::ServerMetrics, server::Connections, state::ServerSt /// This is our metrics service, the thing called to handle requests coming from hyper #[derive(Clone)] -struct HttpState { +struct AppState { server_state: Arc>, connections: Arc>, server_metrics: Arc>, + base_path: Arc>, } -fn abort(req: &HttpRequest) -> impl Responder { +async fn index(data: web::Data) -> Result { + let base_path = data.base_path.read(); + let mut index_path = base_path.clone(); + index_path.push("index.html"); + debug!("Resolving index.html to location {}", index_path.display()); + Ok(fs::NamedFile::open(index_path)?) +} + +async fn abort(data: web::Data) -> impl Responder { if cfg!(debug_assertions) { - let state = req.state(); // Abort the server from the command - let mut server_state = state.server_state.write(); + let mut server_state = data.server_state.write(); server_state.abort(); HttpResponse::Ok().content_type("text/plain").body("OK") } else { @@ -38,27 +44,25 @@ fn abort(req: &HttpRequest) -> impl Responder { } } -fn metrics(req: &HttpRequest) -> impl Responder { +async fn metrics(data: web::Data) -> impl Responder { use std::ops::Deref; - let state = req.state(); - // Send metrics data as json let json = { // Careful with the ordering here to avoid potential deadlock. Metrics are locked // several times in scope to avoid deadlocks issues. { - let server_state = state.server_state.read(); - let mut server_metrics = state.server_metrics.write(); + let server_state = data.server_state.read(); + let mut server_metrics = data.server_metrics.write(); server_metrics.update_from_server_state(&server_state); } // Take a copy of connections let connections = { - let connections = state.connections.read(); + let connections = data.connections.read(); connections.clone() }; - let mut server_metrics = state.server_metrics.write(); + let mut server_metrics = data.server_metrics.write(); server_metrics.update_from_connections(connections); serde_json::to_string_pretty(server_metrics.deref()).unwrap() }; @@ -70,6 +74,7 @@ fn metrics(req: &HttpRequest) -> impl Responder { /// Runs an http server on the specified binding address, serving out the supplied server metrics pub fn run_http_server( + runtime: &Runtime, address: &str, content_path: &str, server_state: Arc>, @@ -78,66 +83,41 @@ pub fn run_http_server( ) { let address = String::from(address); let base_path = PathBuf::from(content_path); + let server_state_http = server_state.clone(); - let (tx, rx) = mpsc::channel(); + // Getting this working was very painful since Actix HttpServer does not implement Send trait, so the + // code has to run on a single thread, but also async and through Tokio. - let server_state_http = server_state.clone(); + let runtime_handle = runtime.handle().clone(); thread::spawn(move || { info!( "HTTP server is running on http://{}/ to provide OPC UA server metrics", address ); - let sys = actix::System::new("http-server"); - let addr = server::new(move || { - App::with_state(HttpState { - server_state: server_state_http.clone(), - connections: connections.clone(), - server_metrics: server_metrics.clone(), - }) - .resource("/server/metrics", |r| { - r.method(http::Method::GET).f(metrics) - }) - .resource("/server/abort", |r| r.method(http::Method::GET).f(abort)) - .handler( - "/", - fs::StaticFiles::new(base_path.clone()) - .unwrap() - .index_file("index.html"), - ) - }) - .bind(&address) - .unwrap() - .start(); - // Give the address info to the quit task - let _ = tx.send(addr); - - // Run - let _ = sys.run(); - }); - - // Get the address info from the http server thread - let addr = rx.recv().unwrap(); - - // Spawn tokio to monitor for quit and to shutdown the http server - thread::spawn(move || { - tokio::runtime::Builder::new_current_thread() - .enable_all() - .build() - .unwrap() - .block_on(async move { - let mut timer = interval_at(Instant::now(), Duration::from_secs(1)); - loop { - { - let server_state = trace_read_lock!(server_state); - if server_state.is_abort() { - let _ = addr.send(server::StopServer { graceful: false }); - info!("HTTP server will be stopped"); - break; - } - } - timer.tick().await; - } - }); + let local = tokio::task::LocalSet::new(); + local.spawn_local(async move { + // Spawns a new HTTP server + if let Ok(server) = HttpServer::new(move || { + App::new() + .app_data(web::Data::new(AppState { + server_state: server_state_http.clone(), + connections: connections.clone(), + server_metrics: server_metrics.clone(), + base_path: Arc::new(RwLock::new(base_path.clone())), + })) + .route("/server/metrics", web::get().to(metrics)) + .route("/server/abort", web::get().to(abort)) + .route("/", web::get().to(index)) + }) + .bind(&address) + { + let _ = server.run().await; + } else { + error!("Could not start HTTP server"); + } + }); + runtime_handle.block_on(local); + debug!("HTTP server has terminated"); }); } diff --git a/lib/src/server/subscriptions/mod.rs b/lib/src/server/subscriptions/mod.rs index 9ff7cc650..3e8e2ba24 100644 --- a/lib/src/server/subscriptions/mod.rs +++ b/lib/src/server/subscriptions/mod.rs @@ -2,6 +2,8 @@ // SPDX-License-Identifier: MPL-2.0 // Copyright (C) 2017-2022 Adam Lock +use std::time::Duration; + use crate::core::supported_message::SupportedMessage; use crate::types::{service_types::PublishRequest, status_code::StatusCode}; @@ -26,10 +28,10 @@ pub struct PublishResponseEntry { } /// This converts an OPC UA Duration into a time duration used for testing for interval elapsed -fn duration_from_ms(d: f64) -> time::Duration { +fn duration_from_ms(d: f64) -> Duration { // Duration is a floating point number in millis so turn to microseconds for greater accuracy // 1 millisecond = 1000 microsecond - time::Duration::microseconds((d * 1000f64) as i64) + Duration::from_micros((d * 1000f64) as u64) } pub mod monitored_item; diff --git a/lib/src/server/subscriptions/monitored_item.rs b/lib/src/server/subscriptions/monitored_item.rs index f6061e03e..e6c5e79c7 100644 --- a/lib/src/server/subscriptions/monitored_item.rs +++ b/lib/src/server/subscriptions/monitored_item.rs @@ -259,7 +259,10 @@ impl MonitoredItem { } else { // Compare sample interval to the time elapsed let sampling_interval = super::duration_from_ms(self.sampling_interval); - let elapsed = now.signed_duration_since(self.last_sample_time); + let elapsed = now + .signed_duration_since(self.last_sample_time) + .to_std() + .unwrap(); elapsed >= sampling_interval }; diff --git a/lib/src/server/subscriptions/subscription.rs b/lib/src/server/subscriptions/subscription.rs index c6252906f..ecbb36813 100644 --- a/lib/src/server/subscriptions/subscription.rs +++ b/lib/src/server/subscriptions/subscription.rs @@ -406,7 +406,11 @@ impl Subscription { // Look at the last expiration time compared to now and see if it matches // or exceeds the publishing interval let publishing_interval = super::duration_from_ms(self.publishing_interval); - let elapsed = now.signed_duration_since(self.last_time_publishing_interval_elapsed); + // TODO unwrap logic needs to change + let elapsed = now + .signed_duration_since(self.last_time_publishing_interval_elapsed) + .to_std() + .unwrap(); if elapsed >= publishing_interval { self.last_time_publishing_interval_elapsed = *now; true diff --git a/lib/src/server/subscriptions/subscriptions.rs b/lib/src/server/subscriptions/subscriptions.rs index 4b2f19985..9308dc73c 100644 --- a/lib/src/server/subscriptions/subscriptions.rs +++ b/lib/src/server/subscriptions/subscriptions.rs @@ -2,7 +2,10 @@ // SPDX-License-Identifier: MPL-2.0 // Copyright (C) 2017-2022 Adam Lock -use std::collections::{BTreeMap, VecDeque}; +use std::{ + collections::{BTreeMap, VecDeque}, + time::Duration, +}; use crate::types::{ service_types::{NotificationMessage, PublishRequest, PublishResponse, ServiceFault}, @@ -312,13 +315,15 @@ impl Subscriptions { self.publish_request_queue.retain(|request| { let request_header = &request.request.request_header; let request_timestamp: DateTimeUtc = request_header.timestamp.into(); - let publish_request_timeout = time::Duration::milliseconds(if request_header.timeout_hint > 0 && (request_header.timeout_hint as i64) < publish_request_timeout { - request_header.timeout_hint as i64 + let publish_request_timeout = Duration::from_millis(if request_header.timeout_hint > 0 && (request_header.timeout_hint as i64) < publish_request_timeout { + request_header.timeout_hint as u64 } else { - publish_request_timeout + publish_request_timeout as u64 }); // The request has timed out if the timestamp plus hint exceeds the input time - if now.signed_duration_since(request_timestamp) > publish_request_timeout { + // TODO unwrap logic needs to change + let signed_duration_since: Duration = now.signed_duration_since(request_timestamp).to_std().unwrap(); + if signed_duration_since > publish_request_timeout { debug!("Publish request {} has expired - timestamp = {:?}, expiration hint = {}, publish timeout = {:?}, time now = {:?}, ", request_header.request_handle, request_timestamp, request_timestamp, publish_request_timeout, now); expired_publish_responses.push_front(PublishResponseEntry { request_id: request.request_id, diff --git a/lib/src/server/tests/mod.rs b/lib/src/server/tests/mod.rs index c8a812fcc..e19eec7ca 100644 --- a/lib/src/server/tests/mod.rs +++ b/lib/src/server/tests/mod.rs @@ -1,18 +1,18 @@ use std::{path::PathBuf, sync::Arc}; use chrono; -use time; - -use crate::core::{config::Config, supported_message::SupportedMessage}; -use crate::sync::*; -use crate::types::{status_code::StatusCode, *}; - -use crate::server::{ - address_space::{address_space::*, variable::*}, - builder::ServerBuilder, - config::ServerConfig, - session::*, - subscriptions::*, + +use crate::{ + core::{config::Config, supported_message::SupportedMessage}, + server::{ + address_space::{address_space::*, variable::*}, + builder::ServerBuilder, + config::ServerConfig, + session::*, + subscriptions::*, + }, + sync::*, + types::{status_code::StatusCode, *}, }; mod address_space; @@ -103,7 +103,7 @@ pub fn server_config_invalid() { #[test] pub fn expired_publish_requests() { let now = chrono::Utc::now(); - let now_plus_5s = now + time::Duration::seconds(5); + let now_plus_5s = now + chrono::Duration::seconds(5); // Create two publish requests timestamped now, one which expires in > 30s, one which expires // in > 20s diff --git a/lib/src/server/tests/services/monitored_item.rs b/lib/src/server/tests/services/monitored_item.rs index d633c1a62..24fc49bd4 100644 --- a/lib/src/server/tests/services/monitored_item.rs +++ b/lib/src/server/tests/services/monitored_item.rs @@ -4,14 +4,16 @@ use std::ops::Add; use chrono::{self, Utc}; use super::*; -use crate::server::{ - services::{monitored_item::MonitoredItemService, subscription::SubscriptionService}, - subscriptions::{ - monitored_item::*, - subscription::{SubscriptionState, TickReason}, +use crate::{ + server::{ + services::{monitored_item::MonitoredItemService, subscription::SubscriptionService}, + subscriptions::{ + monitored_item::*, + subscription::{SubscriptionState, TickReason}, + }, }, + supported_message_as, }; -use crate::supported_message_as; fn test_var_node_id() -> NodeId { NodeId::new(1, 1) @@ -43,7 +45,7 @@ fn make_address_space() -> AddressSpace { } fn make_create_request( - sampling_interval: Duration, + sampling_interval: f64, queue_size: u32, node_id: NodeId, attribute_id: AttributeId, @@ -68,7 +70,7 @@ fn make_create_request( } fn make_create_request_data_change_filter( - sampling_interval: Duration, + sampling_interval: f64, queue_size: u32, ) -> MonitoredItemCreateRequest { // Encode a filter to an extension object @@ -90,7 +92,7 @@ fn make_create_request_data_change_filter( } fn make_create_request_event_filter( - sampling_interval: Duration, + sampling_interval: f64, queue_size: u32, ) -> MonitoredItemCreateRequest { let filter = ExtensionObject::from_encodable( diff --git a/lib/src/server/tests/services/subscription.rs b/lib/src/server/tests/services/subscription.rs index c88b2b0f5..78097b1fe 100644 --- a/lib/src/server/tests/services/subscription.rs +++ b/lib/src/server/tests/services/subscription.rs @@ -165,8 +165,6 @@ fn publish_response_subscription() { // Create subscription let subscription_id = create_subscription(server_state.clone(), session.clone(), &ss); - let now = Utc::now(); - // Create a monitored item create_monitored_item( subscription_id, @@ -177,6 +175,8 @@ fn publish_response_subscription() { &mis, ); + let now = Utc::now(); + // Put the subscription into normal state { let mut session = trace_write_lock!(session); @@ -191,6 +191,7 @@ fn publish_response_subscription() { let notification_message = { let request_id = 1001; let request = publish_request(None); + // Tick subscriptions to trigger a change let _ = ss.async_publish( &now, diff --git a/lib/src/types/array.rs b/lib/src/types/array.rs index 1a795189e..05aea11d1 100644 --- a/lib/src/types/array.rs +++ b/lib/src/types/array.rs @@ -52,8 +52,7 @@ impl Array { let dimensions = dimensions.into(); // TODO should also Self::validate_dimensions(values.len(), &dimensions) - if Self::validate_array_type_to_values(value_type, &values) - { + if Self::validate_array_type_to_values(value_type, &values) { Ok(Array { value_type, values, diff --git a/lib/src/types/byte_string.rs b/lib/src/types/byte_string.rs index 40c8aab9a..5f436f130 100644 --- a/lib/src/types/byte_string.rs +++ b/lib/src/types/byte_string.rs @@ -10,8 +10,7 @@ use std::{ io::{Read, Write}, }; -use base64::{engine::general_purpose, Engine as _}; - +use base64::{engine::general_purpose::STANDARD, Engine}; use serde::{de, Deserialize, Deserializer, Serialize, Serializer}; use crate::types::{ @@ -218,7 +217,7 @@ impl ByteString { /// Creates a byte string from a Base64 encoded string pub fn from_base64(data: &str) -> Option { - if let Ok(bytes) = general_purpose::STANDARD.decode(data) { + if let Ok(bytes) = STANDARD.decode(data) { Some(Self::from(bytes)) } else { None @@ -229,9 +228,9 @@ impl ByteString { pub fn as_base64(&self) -> String { // Base64 encodes the byte string so it can be represented as a string if let Some(ref value) = self.value { - general_purpose::STANDARD.encode(value) + STANDARD.encode(value) } else { - general_purpose::STANDARD.encode("") + STANDARD.encode("") } } diff --git a/lib/src/types/qualified_name.rs b/lib/src/types/qualified_name.rs index 4f9aeaa38..c311dcf4f 100644 --- a/lib/src/types/qualified_name.rs +++ b/lib/src/types/qualified_name.rs @@ -10,7 +10,7 @@ use crate::types::{encoding::*, string::*}; /// An identifier for a error or condition that is associated with a value or an operation. /// /// A name qualified by a namespace. -/// +/// /// For JSON, the namespace_index is saved as "Uri" and MUST be a numeric value or it will not parse. This is /// is in accordance with OPC UA spec that says to save the index as a numeric according to rules cut and /// pasted from spec below: diff --git a/lib/src/types/tests/mod.rs b/lib/src/types/tests/mod.rs index 04e8bff48..19a1ec26f 100644 --- a/lib/src/types/tests/mod.rs +++ b/lib/src/types/tests/mod.rs @@ -1,8 +1,8 @@ mod date_time; mod encoding; +mod json; mod node_id; mod variant; -mod json; use std::cmp::PartialEq; use std::fmt::Debug; diff --git a/samples/chess-server/src/main.rs b/samples/chess-server/src/main.rs index 9cfead933..2488e6eb1 100644 --- a/samples/chess-server/src/main.rs +++ b/samples/chess-server/src/main.rs @@ -6,6 +6,7 @@ use std::env; use std::path::PathBuf; use std::sync::Arc; use std::thread; +use std::time::Duration; use opcua::server::prelude::*; use opcua::sync::Mutex; @@ -88,8 +89,6 @@ fn main() { // of the variables and observe games being played. thread::spawn(move || { - use std::time::Duration; - let sleep_time = Duration::from_millis(1500); let mut game = game.lock(); loop { diff --git a/samples/demo-server/Cargo.toml b/samples/demo-server/Cargo.toml index 2ebe6eee2..a5d793e14 100644 --- a/samples/demo-server/Cargo.toml +++ b/samples/demo-server/Cargo.toml @@ -14,6 +14,7 @@ rand = "0.7" log4rs = "1.2" lazy_static = "1.4.0" pico-args = "0.5" +tokio = { version = "1", features = ["full"] } [dependencies.opcua] path = "../../lib" diff --git a/samples/demo-server/src/main.rs b/samples/demo-server/src/main.rs index ed5090a4e..41614e886 100644 --- a/samples/demo-server/src/main.rs +++ b/samples/demo-server/src/main.rs @@ -20,9 +20,12 @@ extern crate lazy_static; #[macro_use] extern crate log; -use std::path::PathBuf; +use std::{path::PathBuf, sync::Arc}; + +use tokio; use opcua::server::{http, prelude::*}; +use opcua::sync::RwLock; mod control; mod historical; @@ -50,12 +53,12 @@ impl Default for Args { } } - let content_path = if !PathBuf::from("./index.html").exists() { + let content_path = if PathBuf::from("./index.html").exists() { // For docker image or custom deployment PathBuf::from(".") } else { // Server src dir - PathBuf::from("../../lib/server/html") + PathBuf::from("../../lib/src/server/html") }; Self { @@ -139,20 +142,31 @@ fn main() { // Add historical data providers historical::add_providers(&mut server); + // OPCUA and Actix are sharing tokio runtime, so create it first + let runtime = tokio::runtime::Builder::new_multi_thread() + .enable_all() + .build() + .unwrap(); + // Start the http server, used for metrics - start_http_server(&server, args.content_path.to_str().unwrap()); + start_http_server(&runtime, &server, args.content_path.to_str().unwrap()); // Run the server. This does not ordinarily exit so you must Ctrl+C to terminate - server.run(); + Server::run_server_on_runtime( + runtime, + Server::new_server_task(Arc::new(RwLock::new(server))), + true, + ); } } -fn start_http_server(server: &Server, content_path: &str) { +fn start_http_server(runtime: &tokio::runtime::Runtime, server: &Server, content_path: &str) { let server_state = server.server_state(); let connections = server.connections(); let metrics = server.server_metrics(); // The index.html is in a path relative to the working dir. let _ = http::run_http_server( + runtime, "127.0.0.1:8585", content_path, server_state,