From 753a4bc167e896f90122b135bcf7cbe96fa6fc1f Mon Sep 17 00:00:00 2001 From: Andrew Battat Date: Wed, 18 Mar 2026 18:37:55 +0000 Subject: [PATCH 01/10] Migrate to ic-http-gateway-protocol --- Cargo.lock | 708 ++++++++++++++++++++++++------------- Cargo.toml | 2 +- benches/http_gateway.rs | 2 +- run-tests.sh | 2 +- src/routing/error_cause.rs | 2 +- src/routing/ic/handler.rs | 2 +- src/routing/ic/mod.rs | 2 +- 7 files changed, 473 insertions(+), 247 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c9e4697b..d462205a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -79,9 +79,9 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] name = "anstream" -version = "0.6.21" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" dependencies = [ "anstyle", "anstyle-parse", @@ -94,15 +94,15 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] name = "anstyle-parse" -version = "0.2.7" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" dependencies = [ "utf8parse", ] @@ -129,9 +129,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.101" +version = "1.0.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e0fee31ef5ed1ba1316088939cea399010ed7731dba877ed44aeb407a75ea" +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" [[package]] name = "ar_archive_writer" @@ -206,7 +206,7 @@ checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", "synstructure", ] @@ -218,7 +218,7 @@ checksum = "3109e49b1e4909e9db6515a30c633684d68cdeaa252f215214cb4fa1a5bfee2c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", "synstructure", ] @@ -230,7 +230,7 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -258,9 +258,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.39" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68650b7df54f0293fd061972a0fb05aaf4fc0879d3b3d21a638a182c5c543b9f" +checksum = "d0f9ee0f6e02ffd7ad5816e9464499fba7b3effd01123b515c41d1697c43dad1" dependencies = [ "compression-codecs", "compression-core", @@ -340,7 +340,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -357,7 +357,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -399,6 +399,28 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +[[package]] +name = "aws-lc-rs" +version = "1.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94bffc006df10ac2a68c83692d734a465f8ee6c5b384d8545a636f81d858f4bf" +dependencies = [ + "aws-lc-sys", + "zeroize", +] + +[[package]] +name = "aws-lc-sys" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4321e568ed89bb5a7d291a7f37997c2c0df89809d7b6d12062c81ddb54aa782e" +dependencies = [ + "cc", + "cmake", + "dunce", + "fs_extra", +] + [[package]] name = "axum" version = "0.7.9" @@ -529,7 +551,7 @@ checksum = "604fde5e028fea851ce1d8570bbdc034bec850d157f7569d10f347d06808c05c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -664,7 +686,7 @@ checksum = "f48d6ace212fdf1b45fd6b566bb40808415344642b76c3224c07c8df9da81e97" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -753,9 +775,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.19.1" +version = "3.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" +checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" [[package]] name = "bytecount" @@ -818,6 +840,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "801927ee168e17809ab8901d9f01f700cd7d8d6a6527997fee44e4b0327a253c" dependencies = [ "ahash", + "cached_proc_macro 0.25.0", + "cached_proc_macro_types", "hashbrown 0.15.5", "once_cell", "thiserror 2.0.18", @@ -845,7 +869,19 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", +] + +[[package]] +name = "cached_proc_macro" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9225bdcf4e4a9a4c08bf16607908eb2fbf746828d5e0b5e019726dbf6571f201" +dependencies = [ + "darling 0.20.11", + "proc-macro2", + "quote", + "syn 2.0.117", ] [[package]] @@ -856,9 +892,9 @@ checksum = "ade8366b8bd5ba243f0a58f036cc0ca8a2f069cff1a2351ef1cac6b083e16fc0" [[package]] name = "candid" -version = "0.10.22" +version = "0.10.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b64a1b8e8c368f8ffd2aaa64c7189d0a84783ba162f64de647cefedb4f12c88" +checksum = "846adba6d1b4a00eeb8d4a0e4b88dfab570c25ad150cd52e51dfdc4f9d0a66cd" dependencies = [ "anyhow", "binread", @@ -879,14 +915,14 @@ dependencies = [ [[package]] name = "candid_derive" -version = "0.10.22" +version = "0.10.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a3ad1d26683b72c7fd16c8b2e3ebacf8785c9532389286c89971c1770ee57ce" +checksum = "4c367110b158be2edc335a4ad70f3467fa588d5c5675e149ef38638a8e281fc4" dependencies = [ "lazy_static", "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -897,9 +933,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.2.56" +version = "1.2.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "7a0dd1ca384932ff3641c8718a02769f1698e7563dc6974ffd03346116310423" dependencies = [ "find-msvc-tools", "jobserver", @@ -933,7 +969,18 @@ checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" dependencies = [ "cfg-if", "cipher", - "cpufeatures", + "cpufeatures 0.2.17", +] + +[[package]] +name = "chacha20" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.0", + "rand_core 0.10.0", ] [[package]] @@ -943,7 +990,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" dependencies = [ "aead", - "chacha20", + "chacha20 0.9.1", "cipher", "poly1305", "zeroize", @@ -951,9 +998,9 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.43" +version = "0.4.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118" +checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" dependencies = [ "iana-time-zone", "js-sys", @@ -1003,9 +1050,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.59" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5caf74d17c3aec5495110c34cc3f78644bfa89af6c8993ed4de2790e49b6499" +checksum = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351" dependencies = [ "clap_builder", "clap_derive", @@ -1013,9 +1060,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.59" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "370daa45065b80218950227371916a1633217ae42b2715b2287b606dcd618e24" +checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" dependencies = [ "anstream", "anstyle", @@ -1025,21 +1072,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.55" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5" +checksum = "1110bd8a634a1ab8cb04345d8d878267d57c3cf1b38d91b71af6686408bbca6a" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] name = "clap_lex" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a822ea5bc7590f9d40f1ba12c0dc3c2760f3482c6984db1573ad11031420831" +checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" [[package]] name = "cloudflare" @@ -1049,7 +1096,7 @@ checksum = "1678b3295890df5895480a7c080430e73df2b7101f1763f62a3b32dd532f1d37" dependencies = [ "chrono", "http 1.4.0", - "reqwest", + "reqwest 0.12.28", "serde", "serde_json", "serde_urlencoded", @@ -1060,6 +1107,15 @@ dependencies = [ "uuid", ] +[[package]] +name = "cmake" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75443c44cd6b379beb8c5b45d85d0773baf31cce901fe7bb252f4eff3008ef7d" +dependencies = [ + "cc", +] + [[package]] name = "codicon" version = "3.0.0" @@ -1068,9 +1124,9 @@ checksum = "12170080f3533d6f09a19f81596f836854d0fa4867dc32c8172b8474b4e9de61" [[package]] name = "colorchoice" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "combine" @@ -1084,9 +1140,9 @@ dependencies = [ [[package]] name = "compression-codecs" -version = "0.4.36" +version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00828ba6fd27b45a448e57dbfe84f1029d4c9f26b368157e9a448a5f49a2ec2a" +checksum = "eb7b51a7d9c967fc26773061ba86150f19c50c0d65c887cb1fbe295fd16619b7" dependencies = [ "brotli", "compression-core", @@ -1191,6 +1247,15 @@ dependencies = [ "libc", ] +[[package]] +name = "cpufeatures" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" +dependencies = [ + "libc", +] + [[package]] name = "crc32fast" version = "1.5.0" @@ -1314,7 +1379,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e0b1fab2ae45819af2d0731d60f2afe17227ebb1a1538a236da84c93e9a60162" dependencies = [ "dispatch2", - "nix 0.31.1", + "nix 0.31.2", "windows-sys 0.61.2", ] @@ -1325,7 +1390,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "curve25519-dalek-derive", "digest 0.10.7", "fiat-crypto", @@ -1344,7 +1409,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -1382,12 +1447,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.21.3" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" dependencies = [ - "darling_core 0.21.3", - "darling_macro 0.21.3", + "darling_core 0.23.0", + "darling_macro 0.23.0", ] [[package]] @@ -1415,21 +1480,20 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] name = "darling_core" -version = "0.21.3" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" dependencies = [ - "fnv", "ident_case", "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -1451,18 +1515,18 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] name = "darling_macro" -version = "0.21.3" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ - "darling_core 0.21.3", + "darling_core 0.23.0", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -1526,9 +1590,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.5.6" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc3dc5ad92c2e2d1c193bbbbdf2ea477cb81331de4f3103f267ca18368b988c4" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" dependencies = [ "powerfmt", "serde_core", @@ -1542,7 +1606,7 @@ checksum = "2cdc8d50f426189eef89dac62fabfa0abb27d5cc008f25bf4156a0203325becc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -1589,9 +1653,9 @@ dependencies = [ [[package]] name = "dispatch2" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" +checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" dependencies = [ "bitflags", "block2", @@ -1607,7 +1671,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -1616,6 +1680,12 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + [[package]] name = "dyn-clone" version = "1.0.20" @@ -1722,6 +1792,15 @@ dependencies = [ "log", ] +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + [[package]] name = "enum-as-inner" version = "0.6.1" @@ -1731,7 +1810,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -1951,6 +2030,12 @@ dependencies = [ "tokio", ] +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + [[package]] name = "futures" version = "0.3.32" @@ -2020,7 +2105,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -2102,20 +2187,21 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "r-efi", + "r-efi 5.3.0", "wasip2", "wasm-bindgen", ] [[package]] name = "getrandom" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "139ef39800118c7683f2fd3c98c1b23c09ae076556b435f8e9064ae108aaeeec" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" dependencies = [ "cfg-if", "libc", - "r-efi", + "r-efi 6.0.0", + "rand_core 0.10.0", "wasip2", "wasip3", ] @@ -2514,7 +2600,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.2", + "socket2 0.6.3", "system-configuration", "tokio", "tower-layer", @@ -2549,9 +2635,9 @@ dependencies = [ [[package]] name = "ic-agent" -version = "0.45.0" +version = "0.46.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20a6173286a80fc478462fc45de42faf37a79b0109a489743aeffb3e4a2fc772" +checksum = "223e34e74ee20df849226a45e14f6b47f4d53a97f34d571e7b6111728c965489" dependencies = [ "arc-swap", "async-channel 2.5.0", @@ -2562,7 +2648,6 @@ dependencies = [ "bytes", "cached 0.56.0", "candid", - "der", "ecdsa", "ed25519-consensus", "elliptic-curve", @@ -2573,16 +2658,17 @@ dependencies = [ "http-body-util", "ic-certification 3.1.0", "ic-ed25519", - "ic-transport-types 0.45.0", + "ic-transport-types 0.46.2", "ic-verify-bls-signature", + "ic_principal", "k256", "leb128", "p256", "pem", "pkcs8", - "rand 0.8.5", + "rand 0.10.0", "rangemap", - "reqwest", + "reqwest 0.13.2", "ring", "sec1", "serde", @@ -2600,9 +2686,9 @@ dependencies = [ [[package]] name = "ic-bn-lib" -version = "0.1.15" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bebf3f7882b98efacbbf60f2b215d4856f66aa3d5367eb0c9273a3f10bad676b" +checksum = "1addcc5ca712057ecdd75be4d8ce84e674e6f02e5a8f8e383a7a2e09b25319ee" dependencies = [ "ahash", "anyhow", @@ -2647,7 +2733,7 @@ dependencies = [ "rand 0.8.5", "rcgen 0.14.7", "regex", - "reqwest", + "reqwest 0.13.2", "rustls", "rustls-acme", "rustls-pemfile", @@ -2660,7 +2746,7 @@ dependencies = [ "sev", "sha1", "sha2 0.10.9", - "socket2 0.6.2", + "socket2 0.6.3", "strum 0.27.2", "strum_macros 0.27.2", "systemstat", @@ -2686,9 +2772,9 @@ dependencies = [ [[package]] name = "ic-bn-lib-common" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33384b6a13e4aba516cab14aaa9cefa930aa56489fb0807b3ee926badde01a0a" +checksum = "eaac13671e0e0e304c0ae7152efce9287a1486cbb49023970fd0542fb247d026" dependencies = [ "anyhow", "async-trait", @@ -2709,10 +2795,10 @@ dependencies = [ "parse-size", "prometheus", "rcgen 0.14.7", - "reqwest", + "reqwest 0.13.2", "rustls", "serde", - "socket2 0.6.2", + "socket2 0.6.3", "strum 0.27.2", "thiserror 2.0.18", "tokio-util", @@ -2866,9 +2952,9 @@ dependencies = [ [[package]] name = "ic-custom-domains-backend" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85917759f25f5207fb72786ae7cf016512d4ca6d8dba166b6ed49c207873476e" +checksum = "a94efbb2f7b9cf830124a7412f49ce954dfb14f8133b923a5fee72097a35c85f" dependencies = [ "anyhow", "axum 0.8.8", @@ -2898,9 +2984,9 @@ dependencies = [ [[package]] name = "ic-custom-domains-base" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "720797c8546daf2e5138fd7640b0c46d84cd72369ae5499a22bb8e5a09a16b50" +checksum = "bb6071ccb7a051e08f6964b674310d00c663d0157c912b30173610e9c32ba0d9" dependencies = [ "anyhow", "async-trait", @@ -2930,9 +3016,9 @@ dependencies = [ [[package]] name = "ic-custom-domains-canister-api" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a70cbc0b49edf903593fe95fbc774240cd28622e342dbcaeeef32fb9d5a11bd3" +checksum = "9df00102fef39217284d2bad9e3c4ab88eed77d8a938d18f71b82004070e70ae" dependencies = [ "candid", "derive-new", @@ -2943,9 +3029,9 @@ dependencies = [ [[package]] name = "ic-custom-domains-canister-client" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0124d2771e3649319e5080a4efa17f707b7afd3f56bd6d7702415510646c2ea" +checksum = "ab4b0006685d359e2fbd9662d84a424fb2e00e888d841438039c61f929f866dd" dependencies = [ "anyhow", "arc-swap", @@ -2964,9 +3050,9 @@ dependencies = [ [[package]] name = "ic-ed25519" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b73f85d01b7a3d538353050f1eda546f827ffe7f3ffa35f8e80faa8cff1da10" +checksum = "6ad3d86f2e35cb99ae7497b3e4fa92ad751a8e8978f0680d37b86dd51ef91714" dependencies = [ "curve25519-dalek", "ed25519-dalek", @@ -3013,7 +3099,7 @@ dependencies = [ "ic-custom-domains-backend", "ic-custom-domains-base", "ic-http-certification 3.1.0", - "ic-http-gateway", + "ic-http-gateway-protocol", "ic-transport-types 0.45.0", "itertools 0.14.0", "lazy_static", @@ -3026,7 +3112,7 @@ dependencies = [ "rand 0.8.5", "rand_regex", "regex", - "reqwest", + "reqwest 0.12.28", "rustls", "serde", "serde_cbor", @@ -3084,9 +3170,9 @@ dependencies = [ ] [[package]] -name = "ic-http-gateway" +name = "ic-http-gateway-protocol" version = "0.0.0-git" -source = "git+https://github.com/dfinity/http-gateway?tag=v0.4.2#252f2b10c0c18b0d24c9e54d84d1862e5183ac75" +source = "git+https://github.com/dfinity/ic-http-gateway-protocol?tag=v0.5.0#35e7cce524d5cf6b70762392d806ba814f2b291f" dependencies = [ "bytes", "candid", @@ -3112,6 +3198,17 @@ dependencies = [ "serde_bytes", ] +[[package]] +name = "ic-management-canister-types" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51705516ed4d23f24e8d714a70fe9d7ec17106cfd830d5434a1b29f583ef70ee" +dependencies = [ + "candid", + "serde", + "serde_bytes", +] + [[package]] name = "ic-representation-independent-hash" version = "2.6.0" @@ -3216,24 +3313,42 @@ dependencies = [ "thiserror 2.0.18", ] +[[package]] +name = "ic-transport-types" +version = "0.46.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26448ff3dd1dc1afbfdd008153b2fde7ab117296e866cd7642c4a0cb9c88e421" +dependencies = [ + "candid", + "hex", + "ic-certification 3.1.0", + "leb128", + "serde", + "serde_bytes", + "serde_cbor", + "serde_repr", + "sha2 0.10.9", + "thiserror 2.0.18", +] + [[package]] name = "ic-utils" -version = "0.45.0" +version = "0.46.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30c22aaa2924df0321705dc01d408c8b75d1e1deb40b65defd2ff04008a720be" +checksum = "aac3a9cd22c1e2579af0a2d83b17ad68cee321ee5fc836e3979804ad0395f243" dependencies = [ "async-trait", "candid", "futures-util", "ic-agent", - "ic-management-canister-types", + "ic-management-canister-types 0.7.1", "once_cell", "semver", "serde", "serde_bytes", "sha2 0.10.9", - "strum 0.27.2", - "strum_macros 0.27.2", + "strum 0.28.0", + "strum_macros 0.28.0", "thiserror 2.0.18", "time", ] @@ -3280,6 +3395,7 @@ checksum = "8b2b6c5941dfd659e77b262342fa58ad49489367ad026255cda8c43682d0c534" dependencies = [ "crc32fast", "data-encoding", + "rangemap", "serde", "sha2 0.10.9", "thiserror 1.0.69", @@ -3451,9 +3567,9 @@ dependencies = [ [[package]] name = "instant-acme" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9e04488259349908dd13fadaf3a97523b61da296a468c490e112ecc73d28b47" +checksum = "9f05ad37c421b962354c358d347d4a6130151df9407978372d3ad7f0c8f71a64" dependencies = [ "async-trait", "base64 0.22.1", @@ -3495,9 +3611,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.11.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" +checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" [[package]] name = "ipnetwork" @@ -3599,9 +3715,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.85" +version = "0.3.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3" +checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c" dependencies = [ "once_cell", "wasm-bindgen", @@ -3653,7 +3769,7 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" dependencies = [ - "cpufeatures", + "cpufeatures 0.2.17", ] [[package]] @@ -3706,26 +3822,27 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" [[package]] name = "libc" -version = "0.2.180" +version = "0.2.183" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" +checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" [[package]] name = "libredox" -version = "0.1.12" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" +checksum = "1744e39d1d6a9948f4f388969627434e31128196de472883b39f148769bfe30a" dependencies = [ "bitflags", "libc", - "redox_syscall 0.7.1", + "plain", + "redox_syscall 0.7.3", ] [[package]] name = "linux-raw-sys" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "litemap" @@ -3756,9 +3873,9 @@ checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" [[package]] name = "lz4_flex" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08ab2867e3eeeca90e844d1940eab391c9dc5228783db2ed999acbc0a9ed375a" +checksum = "373f5eceeeab7925e0c1098212f2fbc4d416adec9d35051a6ab251e824c1854a" dependencies = [ "twox-hash", ] @@ -3887,7 +4004,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -3930,9 +4047,9 @@ dependencies = [ [[package]] name = "nix" -version = "0.31.1" +version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225e7cfe711e0ba79a68baeddb2982723e4235247aefce1482f2f16c27865b66" +checksum = "5d6d0705320c1e6ba1d912b5e37cf18071b6c2e9b7fa8215a1e8a7651966f5d3" dependencies = [ "bitflags", "cfg-if", @@ -4083,9 +4200,9 @@ dependencies = [ [[package]] name = "objc2" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05" +checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" dependencies = [ "objc2-encode", ] @@ -4125,9 +4242,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" dependencies = [ "critical-section", "portable-atomic", @@ -4153,9 +4270,9 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "openssl" -version = "0.10.75" +version = "0.10.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" +checksum = "951c002c75e16ea2c65b8c7e4d3d51d5530d8dfa7d060b4776828c88cfb18ecf" dependencies = [ "bitflags", "cfg-if", @@ -4174,7 +4291,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -4194,9 +4311,9 @@ dependencies = [ [[package]] name = "openssl-sys" -version = "0.9.111" +version = "0.9.112" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" +checksum = "57d55af3b3e226502be1526dfdba67ab0e9c96fc293004e79576b2b9edb0dbdb" dependencies = [ "cc", "libc", @@ -4334,29 +4451,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.10" +version = "1.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +checksum = "f1749c7ed4bcaf4c3d0a3efc28538844fb29bcdd7d2b67b2be7e20ba861ff517" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.10" +version = "1.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +checksum = "d9b20ed30f105399776b9c883e68e536ef602a16ae6f596d2c473591d6ad64c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pin-utils" @@ -4366,9 +4483,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "piper" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +checksum = "c835479a4443ded371d6c535cbfd8d31ad92c5d23ae9770a61bc155e4992a3c1" dependencies = [ "atomic-waker", "fastrand", @@ -4391,6 +4508,12 @@ version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +[[package]] +name = "plain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" + [[package]] name = "plotters" version = "0.3.7" @@ -4431,9 +4554,9 @@ dependencies = [ "flate2", "hex", "ic-certification 3.1.0", - "ic-management-canister-types", + "ic-management-canister-types 0.5.0", "ic-transport-types 0.40.1", - "reqwest", + "reqwest 0.12.28", "schemars 0.8.22", "semver", "serde", @@ -4473,7 +4596,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" dependencies = [ - "cpufeatures", + "cpufeatures 0.2.17", "opaque-debug", "universal-hash", ] @@ -4567,7 +4690,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -4633,7 +4756,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -4646,7 +4769,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -4731,7 +4854,7 @@ dependencies = [ "quinn-udp", "rustc-hash", "rustls", - "socket2 0.6.2", + "socket2 0.6.3", "thiserror 2.0.18", "tokio", "tracing", @@ -4740,10 +4863,11 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.13" +version = "0.11.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" +checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" dependencies = [ + "aws-lc-rs", "bytes", "getrandom 0.3.4", "lru-slab", @@ -4768,16 +4892,16 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.6.2", + "socket2 0.6.3", "tracing", "windows-sys 0.60.2", ] [[package]] name = "quote" -version = "1.0.44" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" dependencies = [ "proc-macro2", ] @@ -4788,6 +4912,12 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + [[package]] name = "rand" version = "0.8.5" @@ -4809,6 +4939,17 @@ dependencies = [ "rand_core 0.9.5", ] +[[package]] +name = "rand" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc266eb313df6c5c09c1c7b1fbe2510961e5bcd3add930c1e31f7ed9da0feff8" +dependencies = [ + "chacha20 0.10.0", + "getrandom 0.4.2", + "rand_core 0.10.0", +] + [[package]] name = "rand_chacha" version = "0.3.1" @@ -4847,6 +4988,12 @@ dependencies = [ "getrandom 0.3.4", ] +[[package]] +name = "rand_core" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c8d0fd677905edcbeedbf2edb6494d676f0e98d54d5cf9bda0b061cb8fb8aba" + [[package]] name = "rand_regex" version = "0.17.0" @@ -4930,9 +5077,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.7.1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35985aa610addc02e24fc232012c86fd11f14111180f902b67e2d5331f8ebf2b" +checksum = "6ce70a74e890531977d37e532c34d45e9055d2409ed08ddba14529471ed0be16" dependencies = [ "bitflags", ] @@ -4965,7 +5112,7 @@ checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -5021,9 +5168,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.9" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a96887878f22d7bad8a3b6dc5b7440e0ada9a245242924394987b21cf2210a4c" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" [[package]] name = "reqwest" @@ -5067,11 +5214,57 @@ dependencies = [ "url", "wasm-bindgen", "wasm-bindgen-futures", - "wasm-streams", + "wasm-streams 0.4.2", "web-sys", "webpki-roots 1.0.6", ] +[[package]] +name = "reqwest" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab3f43e3283ab1488b624b44b0e988d0acea0b3214e694730a055cb6b2efa801" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "hickory-resolver", + "http 1.4.0", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-util", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls", + "rustls-pki-types", + "rustls-platform-verifier", + "serde", + "serde_json", + "sync_wrapper", + "tokio", + "tokio-rustls", + "tokio-util", + "tower 0.5.3", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams 0.5.0", + "web-sys", +] + [[package]] name = "resolv-conf" version = "0.7.6" @@ -5128,9 +5321,9 @@ dependencies = [ [[package]] name = "rustix" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ "bitflags", "errno", @@ -5141,10 +5334,11 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.36" +version = "0.23.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b" +checksum = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4" dependencies = [ + "aws-lc-rs", "brotli", "brotli-decompressor", "log", @@ -5246,6 +5440,7 @@ version = "0.103.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53" dependencies = [ + "aws-lc-rs", "ring", "rustls-pki-types", "untrusted", @@ -5274,9 +5469,9 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.28" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" +checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939" dependencies = [ "windows-sys 0.61.2", ] @@ -5326,7 +5521,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -5351,9 +5546,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "3.6.0" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d17b898a6d6948c3a8ee4372c17cb384f90d2e6e912ef00895b14fd7ab54ec38" +checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" dependencies = [ "bitflags", "core-foundation 0.10.1", @@ -5364,9 +5559,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.16.0" +version = "2.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "321c8673b092a9a42605034a9879d73cb79101ed5fd117bc9a597b89b4e9e61a" +checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3" dependencies = [ "core-foundation-sys", "libc", @@ -5438,7 +5633,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -5449,7 +5644,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -5484,7 +5679,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -5512,9 +5707,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.16.1" +version = "3.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7" +checksum = "dd5414fad8e6907dbdd5bc441a50ae8d6e26151a03b1de04d89a5576de61d01f" dependencies = [ "base64 0.22.1", "chrono", @@ -5531,14 +5726,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.16.1" +version = "3.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c" +checksum = "d3db8978e608f1fe7357e211969fd9abdcae80bac1ba7a3369bb7eb6b404eb65" dependencies = [ - "darling 0.21.3", + "darling 0.23.0", "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -5599,7 +5794,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest 0.10.7", ] @@ -5611,7 +5806,7 @@ checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" dependencies = [ "block-buffer 0.9.0", "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest 0.9.0", "opaque-debug", ] @@ -5623,7 +5818,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest 0.10.7", ] @@ -5732,7 +5927,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -5747,12 +5942,12 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86f4aa3ad99f2088c990dfa82d367e19cb29268ed67c574d10d0a4bfe71f07e0" +checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -5853,6 +6048,12 @@ dependencies = [ "strum_macros 0.27.2", ] +[[package]] +name = "strum" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9628de9b8791db39ceda2b119bbe13134770b56c138ec1d3af810d045c04f9bd" + [[package]] name = "strum_macros" version = "0.26.4" @@ -5863,7 +6064,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -5875,7 +6076,19 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", +] + +[[package]] +name = "strum_macros" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.117", ] [[package]] @@ -5903,9 +6116,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.116" +version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3df424c70518695237746f84cede799c9c58fcb37450d7b23716568cc8bc69cb" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [ "proc-macro2", "quote", @@ -5929,7 +6142,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -5986,12 +6199,12 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.25.0" +version = "3.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0136791f7c95b1f6dd99f9cc786b91bb81c3800b639b3478e561ddb7be95e5f1" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.4.1", + "getrandom 0.4.2", "once_cell", "rustix", "windows-sys 0.61.2", @@ -6038,7 +6251,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -6049,7 +6262,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -6145,9 +6358,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" dependencies = [ "tinyvec_macros", ] @@ -6160,9 +6373,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.49.0" +version = "1.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" +checksum = "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d" dependencies = [ "bytes", "libc", @@ -6170,7 +6383,7 @@ dependencies = [ "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.6.2", + "socket2 0.6.3", "tokio-macros", "tracing", "windows-sys 0.61.2", @@ -6188,13 +6401,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.6.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +checksum = "5c55a2eff8b69ce66c84f85e1da1c233edc36ceb85a2058d11b0d6a3c7e7569c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -6267,9 +6480,9 @@ dependencies = [ [[package]] name = "tonic" -version = "0.14.4" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f32a6f80051a4111560201420c7885d0082ba9efe2ab61875c587bb6b18b9a0" +checksum = "fec7c61a0695dc1887c1b53952990f3ad2e3a31453e1f49f10e75424943a93ec" dependencies = [ "async-trait", "axum 0.8.8", @@ -6284,7 +6497,7 @@ dependencies = [ "hyper-util", "percent-encoding", "pin-project", - "socket2 0.6.2", + "socket2 0.6.3", "sync_wrapper", "tokio", "tokio-stream", @@ -6381,7 +6594,7 @@ dependencies = [ "http 1.4.0", "pin-project", "thiserror 2.0.18", - "tonic 0.14.4", + "tonic 0.14.5", "tower 0.5.3", "tracing", ] @@ -6418,7 +6631,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -6454,9 +6667,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.22" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" dependencies = [ "matchers", "nu-ansi-term", @@ -6719,9 +6932,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.108" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566" +checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e" dependencies = [ "cfg-if", "once_cell", @@ -6732,9 +6945,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.58" +version = "0.4.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f" +checksum = "e9c5522b3a28661442748e09d40924dfb9ca614b21c00d3fd135720e48b67db8" dependencies = [ "cfg-if", "futures-util", @@ -6746,9 +6959,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.108" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608" +checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6756,22 +6969,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.108" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55" +checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.108" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12" +checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16" dependencies = [ "unicode-ident", ] @@ -6821,6 +7034,19 @@ dependencies = [ "web-sys", ] +[[package]] +name = "wasm-streams" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1ec4f6517c9e11ae630e200b2b65d193279042e28edd4a2cda233e46670bbb" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + [[package]] name = "wasmparser" version = "0.244.0" @@ -6868,9 +7094,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.85" +version = "0.3.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598" +checksum = "854ba17bb104abfb26ba36da9729addc7ce7f06f5c0f90f3c391f8461cca21f9" dependencies = [ "js-sys", "wasm-bindgen", @@ -6971,7 +7197,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -6982,7 +7208,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -7357,7 +7583,7 @@ dependencies = [ "heck", "indexmap 2.13.0", "prettyplease", - "syn 2.0.116", + "syn 2.0.117", "wasm-metadata", "wit-bindgen-core", "wit-component", @@ -7373,7 +7599,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", "wit-bindgen-core", "wit-bindgen-rust", ] @@ -7527,28 +7753,28 @@ checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", "synstructure", ] [[package]] name = "zerocopy" -version = "0.8.39" +version = "0.8.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +checksum = "f2578b716f8a7a858b7f02d5bd870c14bf4ddbbcf3a4c05414ba6503640505e3" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.39" +version = "0.8.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +checksum = "7e6cc098ea4d3bd6246687de65af3f920c430e236bee1e3bf2e441463f08a02f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -7568,7 +7794,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", "synstructure", ] @@ -7589,7 +7815,7 @@ checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -7622,7 +7848,7 @@ checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 7e0eb030..fe73fd57 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -54,7 +54,7 @@ ic-custom-domains-backend = "0.1" ic-custom-domains-base = "0.1" ic-http-certification = { version = "3.1.0", optional = true } ic-transport-types = "0.45" -ic-http-gateway = { git = "https://github.com/dfinity/http-gateway", tag = "v0.4.2" } +ic-http-gateway-protocol = { package = "ic-http-gateway-protocol", git = "https://github.com/dfinity/ic-http-gateway-protocol", tag = "v0.5.0" } itertools = "0.14.0" lazy_static = "1.5.0" maxminddb = "0.27.0" diff --git a/benches/http_gateway.rs b/benches/http_gateway.rs index 750e0d75..ecf012a8 100644 --- a/benches/http_gateway.rs +++ b/benches/http_gateway.rs @@ -24,7 +24,7 @@ use ic_bn_lib::{ }; use ic_bn_lib_common::{principal, types::http::ConnInfo}; use ic_http_certification::HttpRequest; -use ic_http_gateway::{CanisterRequest, HttpGatewayClientBuilder}; +use ic_http_gateway_protocol::{CanisterRequest, HttpGatewayClientBuilder}; use uuid::Uuid; use ic_gateway::{ diff --git a/run-tests.sh b/run-tests.sh index 908222a7..520bb1a6 100755 --- a/run-tests.sh +++ b/run-tests.sh @@ -6,7 +6,7 @@ readonly POCKETIC_URL="https://github.com/dfinity/pocketic/releases/download/${P readonly POCKETIC_CHECKSUM="91405ba12fe8a8402cd5903fb43f5927771a5493a970cfcf3ae0dfbd8bdb45ac" readonly ASSET_WASM_URL="https://github.com/dfinity/sdk/raw/fec030f53814e7eaa2f869189e8852b5c0e60e5e/src/distributed/assetstorage.wasm.gz" readonly ASSET_WASM_CHECKSUM="865eb25df5a6d857147e078bb33c727797957247f7af2635846d65c5397b36a6" -readonly LARGE_ASSETS_WASM_URL="https://github.com/dfinity/http-gateway/raw/42408f658199d7278d8ff3293504a06e1b0ef61d/examples/http-gateway/canister/http_gateway_canister_custom_assets.wasm.gz" +readonly LARGE_ASSETS_WASM_URL="https://github.com/dfinity/ic-http-gateway-protocol/raw/42408f658199d7278d8ff3293504a06e1b0ef61d/examples/http-gateway/canister/http_gateway_canister_custom_assets.wasm.gz" readonly LARGE_ASSETS_WASM_CHECKSUM="eedcbf986c67fd4ebe3042094604a9a5703e825e56433e2509a6a4d0384ccf95" readonly WORKDIR="$(pwd)" readonly CANISTER_DIR="${WORKDIR}/canister_wasms" diff --git a/src/routing/error_cause.rs b/src/routing/error_cause.rs index e8bbf646..611d61f8 100644 --- a/src/routing/error_cause.rs +++ b/src/routing/error_cause.rs @@ -11,7 +11,7 @@ use ic_bn_lib::{ ic_agent::AgentError, }; use ic_bn_lib_common::types::http::Error as HttpError; -use ic_http_gateway::HttpGatewayError; +use ic_http_gateway_protocol::HttpGatewayError; use ic_transport_types::RejectCode; use serde::{Deserialize, Serialize}; use serde_json::to_string_pretty; diff --git a/src/routing/ic/handler.rs b/src/routing/ic/handler.rs index f7c71334..b0fb8d9d 100644 --- a/src/routing/ic/handler.rs +++ b/src/routing/ic/handler.rs @@ -9,7 +9,7 @@ use bytes::Bytes; use http::{HeaderValue, StatusCode, header::HOST}; use ic_bn_lib::http::{body::buffer_body, headers::X_REQUEST_ID}; use ic_bn_lib_common::types::http::{ConnInfo, Error as HttpError}; -use ic_http_gateway::{CanisterRequest, HttpGatewayClient, HttpGatewayRequestArgs}; +use ic_http_gateway_protocol::{CanisterRequest, HttpGatewayClient, HttpGatewayRequestArgs}; use crate::routing::{ CanisterId, RequestCtx, diff --git a/src/routing/ic/mod.rs b/src/routing/ic/mod.rs index 08711634..d96296de 100644 --- a/src/routing/ic/mod.rs +++ b/src/routing/ic/mod.rs @@ -25,7 +25,7 @@ use ic_bn_lib::{ }, }; use ic_bn_lib_common::traits::http::ClientHttp; -use ic_http_gateway::{ +use ic_http_gateway_protocol::{ HttpGatewayClient, HttpGatewayClientBuilder, HttpGatewayResponse, HttpGatewayResponseMetadata, }; use tracing::warn; From 7767c4b5edf4852b76a6679555c6346004a9a1b7 Mon Sep 17 00:00:00 2001 From: Andrew Battat Date: Wed, 18 Mar 2026 18:50:19 +0000 Subject: [PATCH 02/10] Fix merge changes --- Cargo.lock | 58 +++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 42 insertions(+), 16 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b1b11619..41d2de38 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -79,9 +79,9 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] name = "anstream" -version = "1.0.0" +version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" dependencies = [ "anstyle", "anstyle-parse", @@ -100,9 +100,9 @@ checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] name = "anstyle-parse" -version = "1.0.0" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ "utf8parse", ] @@ -872,6 +872,18 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "cached_proc_macro" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9225bdcf4e4a9a4c08bf16607908eb2fbf746828d5e0b5e019726dbf6571f201" +dependencies = [ + "darling 0.20.11", + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "cached_proc_macro_types" version = "0.1.1" @@ -1060,9 +1072,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.6.0" +version = "4.5.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1110bd8a634a1ab8cb04345d8d878267d57c3cf1b38d91b71af6686408bbca6a" +checksum = "a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5" dependencies = [ "heck", "proc-macro2", @@ -1435,12 +1447,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.23.0" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" dependencies = [ - "darling_core 0.23.0", - "darling_macro 0.23.0", + "darling_core 0.21.3", + "darling_macro 0.21.3", ] [[package]] @@ -1473,10 +1485,11 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.23.0" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" dependencies = [ + "fnv", "ident_case", "proc-macro2", "quote", @@ -1508,11 +1521,11 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.23.0" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ - "darling_core 0.23.0", + "darling_core 0.21.3", "quote", "syn 2.0.117", ] @@ -2189,6 +2202,7 @@ dependencies = [ "cfg-if", "libc", "r-efi 6.0.0", + "rand_core 0.10.0", "wasip2", "wasip3", ] @@ -5717,7 +5731,7 @@ version = "3.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6d4e30573c8cb306ed6ab1dca8423eec9a463ea0e155f45399455e0368b27e0" dependencies = [ - "darling 0.23.0", + "darling 0.21.3", "proc-macro2", "quote", "syn 2.0.117", @@ -6066,6 +6080,18 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "strum_macros" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "subtle" version = "2.6.1" From 2588b51ec5ec582cb574c3f4b3666428b6a53eba Mon Sep 17 00:00:00 2001 From: Andrew Battat Date: Wed, 18 Mar 2026 19:24:01 +0000 Subject: [PATCH 03/10] Compatibility fixes --- Cargo.lock | 101 ++++++++++++------------------- Cargo.toml | 6 +- src/cli.rs | 5 -- src/routing/ic/route_provider.rs | 20 +----- 4 files changed, 46 insertions(+), 86 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 41d2de38..7c50ef03 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -79,9 +79,9 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] name = "anstream" -version = "0.6.21" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" dependencies = [ "anstyle", "anstyle-parse", @@ -100,9 +100,9 @@ checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] name = "anstyle-parse" -version = "0.2.7" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" dependencies = [ "utf8parse", ] @@ -892,9 +892,9 @@ checksum = "ade8366b8bd5ba243f0a58f036cc0ca8a2f069cff1a2351ef1cac6b083e16fc0" [[package]] name = "candid" -version = "0.10.24" +version = "0.10.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601b519700ec333a2a2c7eb3e8e1eca89177055e3e1fb24ca42cbbb025986696" +checksum = "846adba6d1b4a00eeb8d4a0e4b88dfab570c25ad150cd52e51dfdc4f9d0a66cd" dependencies = [ "anyhow", "binread", @@ -915,9 +915,9 @@ dependencies = [ [[package]] name = "candid_derive" -version = "0.10.24" +version = "0.10.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f195a40cd3d199191fc8b534165fadd78c08a1f9666222addaf9f58593002a73" +checksum = "4c367110b158be2edc335a4ad70f3467fa588d5c5675e149ef38638a8e281fc4" dependencies = [ "lazy_static", "proc-macro2", @@ -1050,9 +1050,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.60" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2797f34da339ce31042b27d23607e051786132987f595b02ba4f6a6dffb7030a" +checksum = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351" dependencies = [ "clap_builder", "clap_derive", @@ -1060,9 +1060,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.60" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24a241312cea5059b13574bb9b3861cabf758b879c15190b37b6d6fd63ab6876" +checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" dependencies = [ "anstream", "anstyle", @@ -1072,9 +1072,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.55" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5" +checksum = "1110bd8a634a1ab8cb04345d8d878267d57c3cf1b38d91b71af6686408bbca6a" dependencies = [ "heck", "proc-macro2", @@ -1447,12 +1447,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.21.3" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" dependencies = [ - "darling_core 0.21.3", - "darling_macro 0.21.3", + "darling_core 0.23.0", + "darling_macro 0.23.0", ] [[package]] @@ -1485,11 +1485,10 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.21.3" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" dependencies = [ - "fnv", "ident_case", "proc-macro2", "quote", @@ -1521,11 +1520,11 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.21.3" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ - "darling_core 0.21.3", + "darling_core 0.23.0", "quote", "syn 2.0.117", ] @@ -2953,9 +2952,9 @@ dependencies = [ [[package]] name = "ic-custom-domains-backend" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e603fa920301c665ecb8fad5d62d776354c3a4553ce6629783d637cab6adc45d" +checksum = "a94efbb2f7b9cf830124a7412f49ce954dfb14f8133b923a5fee72097a35c85f" dependencies = [ "anyhow", "axum 0.8.8", @@ -2985,9 +2984,9 @@ dependencies = [ [[package]] name = "ic-custom-domains-base" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c477e38054978fb7621865f0c17ae9cee9adcc1cd8dace2c2ab50440b901b41" +checksum = "bb6071ccb7a051e08f6964b674310d00c663d0157c912b30173610e9c32ba0d9" dependencies = [ "anyhow", "async-trait", @@ -3017,9 +3016,9 @@ dependencies = [ [[package]] name = "ic-custom-domains-canister-api" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5ef12e22b677eebeed16d670e97d283c6636227aa4a35a10b424bc552d923d" +checksum = "9df00102fef39217284d2bad9e3c4ab88eed77d8a938d18f71b82004070e70ae" dependencies = [ "candid", "derive-new", @@ -3030,9 +3029,9 @@ dependencies = [ [[package]] name = "ic-custom-domains-canister-client" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf0ed55f8655584d4d3396fb857a133293a880d2d59de86d1ab901d3450a3cbc" +checksum = "ab4b0006685d359e2fbd9662d84a424fb2e00e888d841438039c61f929f866dd" dependencies = [ "anyhow", "arc-swap", @@ -3101,7 +3100,7 @@ dependencies = [ "ic-custom-domains-base", "ic-http-certification 3.1.0", "ic-http-gateway-protocol", - "ic-transport-types 0.45.0", + "ic-transport-types 0.46.2", "itertools 0.14.0", "lazy_static", "maxminddb", @@ -3113,7 +3112,7 @@ dependencies = [ "rand 0.8.5", "rand_regex", "regex", - "reqwest 0.12.28", + "reqwest 0.13.2", "rustls", "serde", "serde_cbor", @@ -3296,24 +3295,6 @@ dependencies = [ "thiserror 2.0.18", ] -[[package]] -name = "ic-transport-types" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a775244756a5d97ff19b08071a946a4b4896904e35deb036bf215e80f2e703d" -dependencies = [ - "candid", - "hex", - "ic-certification 3.1.0", - "leb128", - "serde", - "serde_bytes", - "serde_cbor", - "serde_repr", - "sha2 0.10.9", - "thiserror 2.0.18", -] - [[package]] name = "ic-transport-types" version = "0.46.2" @@ -5185,7 +5166,6 @@ dependencies = [ "futures-core", "futures-util", "h2", - "hickory-resolver", "http 1.4.0", "http-body", "http-body-util", @@ -5195,7 +5175,6 @@ dependencies = [ "js-sys", "log", "mime_guess", - "once_cell", "percent-encoding", "pin-project-lite", "quinn", @@ -5708,9 +5687,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.17.0" +version = "3.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "381b283ce7bc6b476d903296fb59d0d36633652b633b27f64db4fb46dcbfc3b9" +checksum = "dd5414fad8e6907dbdd5bc441a50ae8d6e26151a03b1de04d89a5576de61d01f" dependencies = [ "base64 0.22.1", "chrono", @@ -5727,11 +5706,11 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.17.0" +version = "3.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6d4e30573c8cb306ed6ab1dca8423eec9a463ea0e155f45399455e0368b27e0" +checksum = "d3db8978e608f1fe7357e211969fd9abdcae80bac1ba7a3369bb7eb6b404eb65" dependencies = [ - "darling 0.21.3", + "darling 0.23.0", "proc-macro2", "quote", "syn 2.0.117", @@ -6200,9 +6179,9 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.26.0" +version = "3.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82a72c767771b47409d2345987fda8628641887d5466101319899796367354a0" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", "getrandom 0.4.2", diff --git a/Cargo.toml b/Cargo.toml index 6a8f482b..ea7cae65 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -53,7 +53,7 @@ ic-bn-lib-common = "0.1" ic-custom-domains-backend = "0.1" ic-custom-domains-base = "0.1" ic-http-certification = { version = "3.1.0", optional = true } -ic-transport-types = "0.45" +ic-transport-types = "0.46.2" ic-http-gateway-protocol = { package = "ic-http-gateway-protocol", git = "https://github.com/dfinity/ic-http-gateway-protocol", tag = "v0.5.0" } itertools = "0.14.0" lazy_static = "1.5.0" @@ -63,9 +63,9 @@ prometheus = "0.14.0" rand = { version = "0.8.5", features = ["small_rng"] } rand_regex = { version = "0.17.0", optional = true } regex = "1.11.1" -reqwest = { version = "0.12.12", default-features = false, features = [ +reqwest = { version = "0.13.2", default-features = false, features = [ "http2", - "rustls-tls", + "rustls", "hickory-dns", "json", "stream", diff --git a/src/cli.rs b/src/cli.rs index ec28c61d..4f4003f1 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -144,11 +144,6 @@ pub struct Ic { #[clap(env, long)] pub ic_use_discovery: bool, - /// In dynamic routing mode, limits routing to the top K API nodes with best score (ranked by latency and availability). - /// If not set, routing uses all healthy API nodes. - #[clap(env, long)] - pub ic_use_k_top_api_nodes: Option, - /// Path to an IC root key. Must be DER-encoded. /// If not specified - hardcoded or fetched (see `--ic-unsafe-root-key-fetch`) will be used. #[clap(env, long)] diff --git a/src/routing/ic/route_provider.rs b/src/routing/ic/route_provider.rs index d92df96a..2d1de9b0 100644 --- a/src/routing/ic/route_provider.rs +++ b/src/routing/ic/route_provider.rs @@ -6,10 +6,7 @@ use ic_bn_lib::ic_agent::agent::{ http_transport::reqwest_transport::reqwest::Client as AgentClient, route_provider::{ RoundRobinRouteProvider, RouteProvider, - dynamic_routing::{ - dynamic_route_provider::DynamicRouteProviderBuilder, node::Node, - snapshot::latency_based_routing::LatencyRoutingSnapshot, - }, + dynamic_routing::{dynamic_route_provider::DynamicRouteProviderBuilder, node::Node}, }, }; use ic_bn_lib_common::{principal, traits::Healthy}; @@ -62,16 +59,6 @@ pub async fn setup_route_provider( } let route_provider = { - let snapshot = - cli.ic - .ic_use_k_top_api_nodes - .map_or_else(LatencyRoutingSnapshot::new, |k| { - info!( - "Using up to k_top={k} API Nodes with best score for dynamic routing" - ); - LatencyRoutingSnapshot::new().set_k_top_nodes(k) - }); - // This temporary client is only needed for the instantiation. It is later overridden by the checker/fetcher accepting the reqwest_client. let tmp_client = AgentClient::builder() .build() @@ -80,11 +67,10 @@ pub async fn setup_route_provider( let subnet_id = principal!(MAINNET_ROOT_SUBNET_ID); let fetcher = NodesFetcher::new(reqwest_client, subnet_id, None); let route_provider = - DynamicRouteProviderBuilder::new(snapshot, api_seed_nodes, Arc::new(tmp_client)) + DynamicRouteProviderBuilder::new(api_seed_nodes, Arc::new(tmp_client)) .with_checker(Arc::new(checker)) .with_fetcher(Arc::new(fetcher)) - .build() - .await; + .build(); Arc::new(route_provider) }; From 4c258ff2020ca1d5aa47615c83559d46f755f123 Mon Sep 17 00:00:00 2001 From: Andrew Battat Date: Wed, 18 Mar 2026 19:35:56 +0000 Subject: [PATCH 04/10] Fix unit test --- src/routing/proxy.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/routing/proxy.rs b/src/routing/proxy.rs index d084515b..bb116c32 100644 --- a/src/routing/proxy.rs +++ b/src/routing/proxy.rs @@ -302,6 +302,8 @@ mod test { #[tokio::test] async fn test_api_proxy() { + let _ = rustls::crypto::ring::default_provider().install_default(); + // Test eventual success after 4 failures with 5xx let client = Arc::new(TestClient(AtomicUsize::new(0))); let rp = Arc::new(RoundRobinRouteProvider::new(vec!["http://foo"]).unwrap()); From 66721958cac35940d9ae218ac3c2f6e8977bec16 Mon Sep 17 00:00:00 2001 From: Andrew Battat Date: Mon, 23 Mar 2026 16:25:06 +0000 Subject: [PATCH 05/10] Revert "Compatibility fixes" This reverts commit 2588b51ec5ec582cb574c3f4b3666428b6a53eba. --- Cargo.lock | 101 +++++++++++++++++++------------ Cargo.toml | 6 +- src/cli.rs | 5 ++ src/routing/ic/route_provider.rs | 20 +++++- 4 files changed, 86 insertions(+), 46 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5b6b31c0..2e5db2f1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -79,9 +79,9 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] name = "anstream" -version = "1.0.0" +version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" dependencies = [ "anstyle", "anstyle-parse", @@ -100,9 +100,9 @@ checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] name = "anstyle-parse" -version = "1.0.0" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ "utf8parse", ] @@ -892,9 +892,9 @@ checksum = "ade8366b8bd5ba243f0a58f036cc0ca8a2f069cff1a2351ef1cac6b083e16fc0" [[package]] name = "candid" -version = "0.10.26" +version = "0.10.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "846adba6d1b4a00eeb8d4a0e4b88dfab570c25ad150cd52e51dfdc4f9d0a66cd" +checksum = "601b519700ec333a2a2c7eb3e8e1eca89177055e3e1fb24ca42cbbb025986696" dependencies = [ "anyhow", "binread", @@ -915,9 +915,9 @@ dependencies = [ [[package]] name = "candid_derive" -version = "0.10.26" +version = "0.10.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c367110b158be2edc335a4ad70f3467fa588d5c5675e149ef38638a8e281fc4" +checksum = "f195a40cd3d199191fc8b534165fadd78c08a1f9666222addaf9f58593002a73" dependencies = [ "lazy_static", "proc-macro2", @@ -1050,9 +1050,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.6.0" +version = "4.5.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351" +checksum = "2797f34da339ce31042b27d23607e051786132987f595b02ba4f6a6dffb7030a" dependencies = [ "clap_builder", "clap_derive", @@ -1060,9 +1060,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.6.0" +version = "4.5.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" +checksum = "24a241312cea5059b13574bb9b3861cabf758b879c15190b37b6d6fd63ab6876" dependencies = [ "anstream", "anstyle", @@ -1072,9 +1072,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.6.0" +version = "4.5.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1110bd8a634a1ab8cb04345d8d878267d57c3cf1b38d91b71af6686408bbca6a" +checksum = "a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5" dependencies = [ "heck", "proc-macro2", @@ -1447,12 +1447,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.23.0" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" dependencies = [ - "darling_core 0.23.0", - "darling_macro 0.23.0", + "darling_core 0.21.3", + "darling_macro 0.21.3", ] [[package]] @@ -1485,10 +1485,11 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.23.0" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" dependencies = [ + "fnv", "ident_case", "proc-macro2", "quote", @@ -1520,11 +1521,11 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.23.0" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ - "darling_core 0.23.0", + "darling_core 0.21.3", "quote", "syn 2.0.117", ] @@ -2952,9 +2953,9 @@ dependencies = [ [[package]] name = "ic-custom-domains-backend" -version = "0.1.6" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a94efbb2f7b9cf830124a7412f49ce954dfb14f8133b923a5fee72097a35c85f" +checksum = "e603fa920301c665ecb8fad5d62d776354c3a4553ce6629783d637cab6adc45d" dependencies = [ "anyhow", "axum 0.8.8", @@ -2984,9 +2985,9 @@ dependencies = [ [[package]] name = "ic-custom-domains-base" -version = "0.1.6" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb6071ccb7a051e08f6964b674310d00c663d0157c912b30173610e9c32ba0d9" +checksum = "4c477e38054978fb7621865f0c17ae9cee9adcc1cd8dace2c2ab50440b901b41" dependencies = [ "anyhow", "async-trait", @@ -3016,9 +3017,9 @@ dependencies = [ [[package]] name = "ic-custom-domains-canister-api" -version = "0.1.6" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9df00102fef39217284d2bad9e3c4ab88eed77d8a938d18f71b82004070e70ae" +checksum = "9e5ef12e22b677eebeed16d670e97d283c6636227aa4a35a10b424bc552d923d" dependencies = [ "candid", "derive-new", @@ -3029,9 +3030,9 @@ dependencies = [ [[package]] name = "ic-custom-domains-canister-client" -version = "0.1.6" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab4b0006685d359e2fbd9662d84a424fb2e00e888d841438039c61f929f866dd" +checksum = "bf0ed55f8655584d4d3396fb857a133293a880d2d59de86d1ab901d3450a3cbc" dependencies = [ "anyhow", "arc-swap", @@ -3100,7 +3101,7 @@ dependencies = [ "ic-custom-domains-base", "ic-http-certification 3.1.0", "ic-http-gateway-protocol", - "ic-transport-types 0.46.2", + "ic-transport-types 0.45.0", "itertools 0.14.0", "lazy_static", "maxminddb", @@ -3112,7 +3113,7 @@ dependencies = [ "rand 0.8.5", "rand_regex", "regex", - "reqwest 0.13.2", + "reqwest 0.12.28", "rustls", "serde", "serde_cbor", @@ -3295,6 +3296,24 @@ dependencies = [ "thiserror 2.0.18", ] +[[package]] +name = "ic-transport-types" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a775244756a5d97ff19b08071a946a4b4896904e35deb036bf215e80f2e703d" +dependencies = [ + "candid", + "hex", + "ic-certification 3.1.0", + "leb128", + "serde", + "serde_bytes", + "serde_cbor", + "serde_repr", + "sha2 0.10.9", + "thiserror 2.0.18", +] + [[package]] name = "ic-transport-types" version = "0.46.2" @@ -5166,6 +5185,7 @@ dependencies = [ "futures-core", "futures-util", "h2", + "hickory-resolver", "http 1.4.0", "http-body", "http-body-util", @@ -5175,6 +5195,7 @@ dependencies = [ "js-sys", "log", "mime_guess", + "once_cell", "percent-encoding", "pin-project-lite", "quinn", @@ -5687,9 +5708,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.18.0" +version = "3.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd5414fad8e6907dbdd5bc441a50ae8d6e26151a03b1de04d89a5576de61d01f" +checksum = "381b283ce7bc6b476d903296fb59d0d36633652b633b27f64db4fb46dcbfc3b9" dependencies = [ "base64 0.22.1", "chrono", @@ -5706,11 +5727,11 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.18.0" +version = "3.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3db8978e608f1fe7357e211969fd9abdcae80bac1ba7a3369bb7eb6b404eb65" +checksum = "a6d4e30573c8cb306ed6ab1dca8423eec9a463ea0e155f45399455e0368b27e0" dependencies = [ - "darling 0.23.0", + "darling 0.21.3", "proc-macro2", "quote", "syn 2.0.117", @@ -6179,9 +6200,9 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.27.0" +version = "3.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" +checksum = "82a72c767771b47409d2345987fda8628641887d5466101319899796367354a0" dependencies = [ "fastrand", "getrandom 0.4.2", diff --git a/Cargo.toml b/Cargo.toml index ea7cae65..6a8f482b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -53,7 +53,7 @@ ic-bn-lib-common = "0.1" ic-custom-domains-backend = "0.1" ic-custom-domains-base = "0.1" ic-http-certification = { version = "3.1.0", optional = true } -ic-transport-types = "0.46.2" +ic-transport-types = "0.45" ic-http-gateway-protocol = { package = "ic-http-gateway-protocol", git = "https://github.com/dfinity/ic-http-gateway-protocol", tag = "v0.5.0" } itertools = "0.14.0" lazy_static = "1.5.0" @@ -63,9 +63,9 @@ prometheus = "0.14.0" rand = { version = "0.8.5", features = ["small_rng"] } rand_regex = { version = "0.17.0", optional = true } regex = "1.11.1" -reqwest = { version = "0.13.2", default-features = false, features = [ +reqwest = { version = "0.12.12", default-features = false, features = [ "http2", - "rustls", + "rustls-tls", "hickory-dns", "json", "stream", diff --git a/src/cli.rs b/src/cli.rs index 39eea054..6027fd56 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -144,6 +144,11 @@ pub struct Ic { #[clap(env, long)] pub ic_use_discovery: bool, + /// In dynamic routing mode, limits routing to the top K API nodes with best score (ranked by latency and availability). + /// If not set, routing uses all healthy API nodes. + #[clap(env, long)] + pub ic_use_k_top_api_nodes: Option, + /// Path to an IC root key. Must be DER-encoded. /// If not specified - hardcoded or fetched (see `--ic-unsafe-root-key-fetch`) will be used. #[clap(env, long)] diff --git a/src/routing/ic/route_provider.rs b/src/routing/ic/route_provider.rs index eae980db..0f003682 100644 --- a/src/routing/ic/route_provider.rs +++ b/src/routing/ic/route_provider.rs @@ -6,7 +6,10 @@ use ic_bn_lib::ic_agent::agent::{ http_transport::reqwest_transport::reqwest::Client as AgentClient, route_provider::{ RoundRobinRouteProvider, RouteProvider, - dynamic_routing::{dynamic_route_provider::DynamicRouteProviderBuilder, node::Node}, + dynamic_routing::{ + dynamic_route_provider::DynamicRouteProviderBuilder, node::Node, + snapshot::latency_based_routing::LatencyRoutingSnapshot, + }, }, }; use ic_bn_lib_common::{principal, traits::Healthy}; @@ -60,6 +63,16 @@ pub async fn setup_route_provider( } let route_provider = { + let snapshot = + cli.ic + .ic_use_k_top_api_nodes + .map_or_else(LatencyRoutingSnapshot::new, |k| { + info!( + "Using up to k_top={k} API Nodes with best score for dynamic routing" + ); + LatencyRoutingSnapshot::new().set_k_top_nodes(k) + }); + // This temporary client is only needed for the instantiation. It is later overridden by the checker/fetcher accepting the reqwest_client. let tmp_client = AgentClient::builder() .build() @@ -68,10 +81,11 @@ pub async fn setup_route_provider( let subnet_id = principal!(MAINNET_ROOT_SUBNET_ID); let fetcher = NodesFetcher::new(reqwest_client, subnet_id, None); let route_provider = - DynamicRouteProviderBuilder::new(api_seed_nodes, Arc::new(tmp_client)) + DynamicRouteProviderBuilder::new(snapshot, api_seed_nodes, Arc::new(tmp_client)) .with_checker(Arc::new(checker)) .with_fetcher(Arc::new(fetcher)) - .build(); + .build() + .await; Arc::new(route_provider) }; From b7d98ee694860fcdec971f1572fcbbb4b120816f Mon Sep 17 00:00:00 2001 From: Andrew Battat Date: Mon, 23 Mar 2026 16:25:15 +0000 Subject: [PATCH 06/10] Revert "Fix unit test" This reverts commit 4c258ff2020ca1d5aa47615c83559d46f755f123. --- src/routing/proxy.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/routing/proxy.rs b/src/routing/proxy.rs index bb116c32..d084515b 100644 --- a/src/routing/proxy.rs +++ b/src/routing/proxy.rs @@ -302,8 +302,6 @@ mod test { #[tokio::test] async fn test_api_proxy() { - let _ = rustls::crypto::ring::default_provider().install_default(); - // Test eventual success after 4 failures with 5xx let client = Arc::new(TestClient(AtomicUsize::new(0))); let rp = Arc::new(RoundRobinRouteProvider::new(vec!["http://foo"]).unwrap()); From 0cdd00d6f16890da434f9950db4f7f4e085b21c0 Mon Sep 17 00:00:00 2001 From: Andrew Battat Date: Mon, 23 Mar 2026 16:25:43 +0000 Subject: [PATCH 07/10] Update cargo lockfile --- Cargo.lock | 276 +++++++++++++++++++++++++++++++++-------------------- 1 file changed, 174 insertions(+), 102 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2e5db2f1..e63d75bd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -79,9 +79,9 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] name = "anstream" -version = "0.6.21" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" dependencies = [ "anstyle", "anstyle-parse", @@ -100,9 +100,9 @@ checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] name = "anstyle-parse" -version = "0.2.7" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" dependencies = [ "utf8parse", ] @@ -113,7 +113,7 @@ version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -124,7 +124,7 @@ checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -144,9 +144,9 @@ dependencies = [ [[package]] name = "arc-swap" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9f3647c145568cec02c42054e07bdf9a5a698e15b466fb2341bfc393cd24aa5" +checksum = "a07d1f37ff60921c83bdfc7407723bdefe89b44b98a9b772f225c8f9d67141a6" dependencies = [ "rustversion", ] @@ -401,9 +401,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "aws-lc-rs" -version = "1.16.1" +version = "1.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94bffc006df10ac2a68c83692d734a465f8ee6c5b384d8545a636f81d858f4bf" +checksum = "a054912289d18629dc78375ba2c3726a3afe3ff71b4edba9dedfca0e3446d1fc" dependencies = [ "aws-lc-sys", "zeroize", @@ -411,9 +411,9 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.38.0" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4321e568ed89bb5a7d291a7f37997c2c0df89809d7b6d12062c81ddb54aa782e" +checksum = "1fa7e52a4c5c547c741610a2c6f123f3881e409b714cd27e6798ef020c514f0a" dependencies = [ "cc", "cmake", @@ -892,9 +892,9 @@ checksum = "ade8366b8bd5ba243f0a58f036cc0ca8a2f069cff1a2351ef1cac6b083e16fc0" [[package]] name = "candid" -version = "0.10.24" +version = "0.10.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601b519700ec333a2a2c7eb3e8e1eca89177055e3e1fb24ca42cbbb025986696" +checksum = "846adba6d1b4a00eeb8d4a0e4b88dfab570c25ad150cd52e51dfdc4f9d0a66cd" dependencies = [ "anyhow", "binread", @@ -915,9 +915,9 @@ dependencies = [ [[package]] name = "candid_derive" -version = "0.10.24" +version = "0.10.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f195a40cd3d199191fc8b534165fadd78c08a1f9666222addaf9f58593002a73" +checksum = "4c367110b158be2edc335a4ad70f3467fa588d5c5675e149ef38638a8e281fc4" dependencies = [ "lazy_static", "proc-macro2", @@ -1050,9 +1050,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.60" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2797f34da339ce31042b27d23607e051786132987f595b02ba4f6a6dffb7030a" +checksum = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351" dependencies = [ "clap_builder", "clap_derive", @@ -1060,9 +1060,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.60" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24a241312cea5059b13574bb9b3861cabf758b879c15190b37b6d6fd63ab6876" +checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" dependencies = [ "anstream", "anstyle", @@ -1072,9 +1072,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.55" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5" +checksum = "1110bd8a634a1ab8cb04345d8d878267d57c3cf1b38d91b71af6686408bbca6a" dependencies = [ "heck", "proc-macro2", @@ -1363,9 +1363,9 @@ dependencies = [ [[package]] name = "crypto-common" -version = "0.1.7" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array", "rand_core 0.6.4", @@ -1447,12 +1447,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.21.3" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" dependencies = [ - "darling_core 0.21.3", - "darling_macro 0.21.3", + "darling_core 0.23.0", + "darling_macro 0.23.0", ] [[package]] @@ -1485,11 +1485,10 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.21.3" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" dependencies = [ - "fnv", "ident_case", "proc-macro2", "quote", @@ -1521,11 +1520,11 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.21.3" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ - "darling_core 0.21.3", + "darling_core 0.23.0", "quote", "syn 2.0.117", ] @@ -1649,7 +1648,7 @@ dependencies = [ "libc", "option-ext", "redox_users", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -1836,7 +1835,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -2157,9 +2156,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.7" +version = "0.14.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" dependencies = [ "typenum", "version_check", @@ -2670,6 +2669,56 @@ dependencies = [ "rand 0.10.0", "rangemap", "reqwest 0.13.2", + "sec1", + "serde", + "serde_bytes", + "serde_cbor", + "serde_repr", + "sha2 0.10.9", + "stop-token", + "thiserror 2.0.18", + "time", + "tokio", + "tower-service", + "url", +] + +[[package]] +name = "ic-agent" +version = "0.47.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "087c953695a2581a1e58a23a88e16a19e5eb2638ecefeea0bde22f23d8896786" +dependencies = [ + "arc-swap", + "async-channel 2.5.0", + "async-lock", + "async-trait", + "async-watch", + "backoff", + "bytes", + "cached 0.56.0", + "candid", + "ecdsa", + "ed25519-consensus", + "elliptic-curve", + "futures-util", + "hex", + "http 1.4.0", + "http-body", + "http-body-util", + "ic-certification 3.1.0", + "ic-ed25519", + "ic-transport-types 0.47.0", + "ic-verify-bls-signature", + "ic_principal", + "k256", + "leb128", + "p256", + "pem", + "pkcs8", + "rand 0.10.0", + "rangemap", + "reqwest 0.13.2", "ring", "sec1", "serde", @@ -2687,9 +2736,9 @@ dependencies = [ [[package]] name = "ic-bn-lib" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1addcc5ca712057ecdd75be4d8ce84e674e6f02e5a8f8e383a7a2e09b25319ee" +checksum = "e21032f5e1bd401dcbf460359be3401549d4694dd2971e3642b6d2595f905a9d" dependencies = [ "ahash", "anyhow", @@ -2720,7 +2769,7 @@ dependencies = [ "hyper", "hyper-rustls", "hyper-util", - "ic-agent", + "ic-agent 0.47.0", "ic-bn-lib-common", "indoc", "instant-acme", @@ -2773,9 +2822,9 @@ dependencies = [ [[package]] name = "ic-bn-lib-common" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaac13671e0e0e304c0ae7152efce9287a1486cbb49023970fd0542fb247d026" +checksum = "2e72185c480d814f739f32c860f8f36962f58f4898716cb39a2e2b4e0714d12d" dependencies = [ "anyhow", "async-trait", @@ -2791,7 +2840,7 @@ dependencies = [ "humantime", "hyper", "hyper-util", - "ic-agent", + "ic-agent 0.47.0", "instant-acme", "parse-size", "prometheus", @@ -2953,9 +3002,9 @@ dependencies = [ [[package]] name = "ic-custom-domains-backend" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e603fa920301c665ecb8fad5d62d776354c3a4553ce6629783d637cab6adc45d" +checksum = "a94efbb2f7b9cf830124a7412f49ce954dfb14f8133b923a5fee72097a35c85f" dependencies = [ "anyhow", "axum 0.8.8", @@ -2985,9 +3034,9 @@ dependencies = [ [[package]] name = "ic-custom-domains-base" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c477e38054978fb7621865f0c17ae9cee9adcc1cd8dace2c2ab50440b901b41" +checksum = "bb6071ccb7a051e08f6964b674310d00c663d0157c912b30173610e9c32ba0d9" dependencies = [ "anyhow", "async-trait", @@ -3017,9 +3066,9 @@ dependencies = [ [[package]] name = "ic-custom-domains-canister-api" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5ef12e22b677eebeed16d670e97d283c6636227aa4a35a10b424bc552d923d" +checksum = "9df00102fef39217284d2bad9e3c4ab88eed77d8a938d18f71b82004070e70ae" dependencies = [ "candid", "derive-new", @@ -3030,9 +3079,9 @@ dependencies = [ [[package]] name = "ic-custom-domains-canister-client" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf0ed55f8655584d4d3396fb857a133293a880d2d59de86d1ab901d3450a3cbc" +checksum = "ab4b0006685d359e2fbd9662d84a424fb2e00e888d841438039c61f929f866dd" dependencies = [ "anyhow", "arc-swap", @@ -3181,7 +3230,7 @@ dependencies = [ "http 1.4.0", "http-body", "http-body-util", - "ic-agent", + "ic-agent 0.46.2", "ic-http-certification 3.1.0", "ic-response-verification 3.1.0", "ic-utils", @@ -3332,6 +3381,24 @@ dependencies = [ "thiserror 2.0.18", ] +[[package]] +name = "ic-transport-types" +version = "0.47.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a91a2dc71282291a7c26ec7c23e57335fc4a562a6b0b571ede0044790a68a3f" +dependencies = [ + "candid", + "hex", + "ic-certification 3.1.0", + "leb128", + "serde", + "serde_bytes", + "serde_cbor", + "serde_repr", + "sha2 0.10.9", + "thiserror 2.0.18", +] + [[package]] name = "ic-utils" version = "0.46.2" @@ -3341,7 +3408,7 @@ dependencies = [ "async-trait", "candid", "futures-util", - "ic-agent", + "ic-agent 0.46.2", "ic-management-canister-types 0.7.1", "once_cell", "semver", @@ -3624,9 +3691,9 @@ checksum = "cf370abdafd54d13e54a620e8c3e1145f28e46cc9d704bc6d94414559df41763" [[package]] name = "iri-string" -version = "0.7.10" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" +checksum = "d8e7418f59cc01c88316161279a7f665217ae316b388e58a0d10e29f54f1e5eb" dependencies = [ "memchr", "serde", @@ -3640,7 +3707,7 @@ checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46" dependencies = [ "hermit-abi", "libc", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -3658,15 +3725,6 @@ dependencies = [ "either", ] -[[package]] -name = "itertools" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.14.0" @@ -3678,9 +3736,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "jni" @@ -3691,7 +3749,7 @@ dependencies = [ "cesu8", "cfg-if", "combine", - "jni-sys", + "jni-sys 0.3.1", "log", "thiserror 1.0.69", "walkdir", @@ -3700,9 +3758,31 @@ dependencies = [ [[package]] name = "jni-sys" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" +checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" +dependencies = [ + "jni-sys 0.4.1", +] + +[[package]] +name = "jni-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn 2.0.117", +] [[package]] name = "jobserver" @@ -4058,12 +4138,6 @@ dependencies = [ "libc", ] -[[package]] -name = "nohash" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0f889fb66f7acdf83442c35775764b51fed3c606ab9cee51500dbde2cf528ca" - [[package]] name = "nom" version = "7.1.3" @@ -4110,7 +4184,7 @@ version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -5155,14 +5229,12 @@ dependencies = [ [[package]] name = "regex-filtered" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c11639076bf147be211b90e47790db89f4c22b6c8a9ca6e960833869da67166" +checksum = "ac5f7b31fbef748cc46643c1f9ba17f6d5c7c6f0ba5e372fc9c48d31ad1c8612" dependencies = [ "aho-corasick", - "indexmap 2.13.0", - "itertools 0.13.0", - "nohash", + "itertools 0.14.0", "regex", "regex-syntax", ] @@ -5330,7 +5402,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -5426,7 +5498,7 @@ dependencies = [ "security-framework", "security-framework-sys", "webpki-root-certs", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -5708,9 +5780,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.17.0" +version = "3.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "381b283ce7bc6b476d903296fb59d0d36633652b633b27f64db4fb46dcbfc3b9" +checksum = "dd5414fad8e6907dbdd5bc441a50ae8d6e26151a03b1de04d89a5576de61d01f" dependencies = [ "base64 0.22.1", "chrono", @@ -5727,11 +5799,11 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.17.0" +version = "3.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6d4e30573c8cb306ed6ab1dca8423eec9a463ea0e155f45399455e0368b27e0" +checksum = "d3db8978e608f1fe7357e211969fd9abdcae80bac1ba7a3369bb7eb6b404eb65" dependencies = [ - "darling 0.21.3", + "darling 0.23.0", "proc-macro2", "quote", "syn 2.0.117", @@ -5948,7 +6020,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -6200,15 +6272,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.26.0" +version = "3.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82a72c767771b47409d2345987fda8628641887d5466101319899796367354a0" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", "getrandom 0.4.2", "once_cell", "rustix", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -6217,7 +6289,7 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8c27177b12a6399ffc08b98f76f7c9a1f4fe9fc967c784c5a071fa8d93cf7e1" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -6714,9 +6786,9 @@ checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" [[package]] name = "ua-parser" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c06b979bd5606d182759ff9cd3dda2b034b584a1ed41116407cb92abf3c995a" +checksum = "f01b7ba339f8874b643216c6c957d792047143abe848568131e5d91d2ae2ada1" dependencies = [ "regex", "regex-filtered", @@ -7168,7 +7240,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.61.2", ] [[package]] @@ -7760,18 +7832,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.42" +version = "0.8.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2578b716f8a7a858b7f02d5bd870c14bf4ddbbcf3a4c05414ba6503640505e3" +checksum = "efbb2a062be311f2ba113ce66f697a4dc589f85e78a4aea276200804cea0ed87" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.42" +version = "0.8.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e6cc098ea4d3bd6246687de65af3f920c430e236bee1e3bf2e441463f08a02f" +checksum = "0e8bc7269b54418e7aeeef514aa68f8690b8c0489a06b0136e5f57c4c5ccab89" dependencies = [ "proc-macro2", "quote", From 6675be63c07e9ad66008533249eb0cda6d3d3a83 Mon Sep 17 00:00:00 2001 From: Andrew Battat Date: Mon, 23 Mar 2026 17:08:21 +0000 Subject: [PATCH 08/10] Update ic-http-gateway-protocol --- Cargo.lock | 82 +++++------------------------------------------------- Cargo.toml | 2 +- 2 files changed, 8 insertions(+), 76 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e63d75bd..9755334d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2633,56 +2633,6 @@ dependencies = [ "cc", ] -[[package]] -name = "ic-agent" -version = "0.46.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "223e34e74ee20df849226a45e14f6b47f4d53a97f34d571e7b6111728c965489" -dependencies = [ - "arc-swap", - "async-channel 2.5.0", - "async-lock", - "async-trait", - "async-watch", - "backoff", - "bytes", - "cached 0.56.0", - "candid", - "ecdsa", - "ed25519-consensus", - "elliptic-curve", - "futures-util", - "hex", - "http 1.4.0", - "http-body", - "http-body-util", - "ic-certification 3.1.0", - "ic-ed25519", - "ic-transport-types 0.46.2", - "ic-verify-bls-signature", - "ic_principal", - "k256", - "leb128", - "p256", - "pem", - "pkcs8", - "rand 0.10.0", - "rangemap", - "reqwest 0.13.2", - "sec1", - "serde", - "serde_bytes", - "serde_cbor", - "serde_repr", - "sha2 0.10.9", - "stop-token", - "thiserror 2.0.18", - "time", - "tokio", - "tower-service", - "url", -] - [[package]] name = "ic-agent" version = "0.47.0" @@ -2769,7 +2719,7 @@ dependencies = [ "hyper", "hyper-rustls", "hyper-util", - "ic-agent 0.47.0", + "ic-agent", "ic-bn-lib-common", "indoc", "instant-acme", @@ -2840,7 +2790,7 @@ dependencies = [ "humantime", "hyper", "hyper-util", - "ic-agent 0.47.0", + "ic-agent", "instant-acme", "parse-size", "prometheus", @@ -3222,7 +3172,7 @@ dependencies = [ [[package]] name = "ic-http-gateway-protocol" version = "0.0.0-git" -source = "git+https://github.com/dfinity/ic-http-gateway-protocol?tag=v0.5.0#35e7cce524d5cf6b70762392d806ba814f2b291f" +source = "git+https://github.com/dfinity/ic-http-gateway-protocol?tag=v0.5.1#ec1a288ec9f02cd3a398be429a30399844bca2e4" dependencies = [ "bytes", "candid", @@ -3230,7 +3180,7 @@ dependencies = [ "http 1.4.0", "http-body", "http-body-util", - "ic-agent 0.46.2", + "ic-agent", "ic-http-certification 3.1.0", "ic-response-verification 3.1.0", "ic-utils", @@ -3363,24 +3313,6 @@ dependencies = [ "thiserror 2.0.18", ] -[[package]] -name = "ic-transport-types" -version = "0.46.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26448ff3dd1dc1afbfdd008153b2fde7ab117296e866cd7642c4a0cb9c88e421" -dependencies = [ - "candid", - "hex", - "ic-certification 3.1.0", - "leb128", - "serde", - "serde_bytes", - "serde_cbor", - "serde_repr", - "sha2 0.10.9", - "thiserror 2.0.18", -] - [[package]] name = "ic-transport-types" version = "0.47.0" @@ -3401,14 +3333,14 @@ dependencies = [ [[package]] name = "ic-utils" -version = "0.46.2" +version = "0.47.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aac3a9cd22c1e2579af0a2d83b17ad68cee321ee5fc836e3979804ad0395f243" +checksum = "e4dac90c041fee47ed98d9f2d1bb3455fb79c43bc4730af3c91f29aec3822e52" dependencies = [ "async-trait", "candid", "futures-util", - "ic-agent 0.46.2", + "ic-agent", "ic-management-canister-types 0.7.1", "once_cell", "semver", diff --git a/Cargo.toml b/Cargo.toml index 6a8f482b..ba0ba591 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -54,7 +54,7 @@ ic-custom-domains-backend = "0.1" ic-custom-domains-base = "0.1" ic-http-certification = { version = "3.1.0", optional = true } ic-transport-types = "0.45" -ic-http-gateway-protocol = { package = "ic-http-gateway-protocol", git = "https://github.com/dfinity/ic-http-gateway-protocol", tag = "v0.5.0" } +ic-http-gateway-protocol = { package = "ic-http-gateway-protocol", git = "https://github.com/dfinity/ic-http-gateway-protocol", tag = "v0.5.1" } itertools = "0.14.0" lazy_static = "1.5.0" maxminddb = "0.27.0" From 92eb4feb3e9bcc5b3d301ea7422e8f5627347ef7 Mon Sep 17 00:00:00 2001 From: Andrew Battat Date: Mon, 23 Mar 2026 17:26:15 +0000 Subject: [PATCH 09/10] Dependency version alignment --- Cargo.lock | 24 ++---------------- Cargo.toml | 6 ++--- src/routing/ic/route_provider.rs | 42 ++++++++++++-------------------- 3 files changed, 21 insertions(+), 51 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9755334d..f86564d5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3100,7 +3100,7 @@ dependencies = [ "ic-custom-domains-base", "ic-http-certification 3.1.0", "ic-http-gateway-protocol", - "ic-transport-types 0.45.0", + "ic-transport-types 0.47.0", "itertools 0.14.0", "lazy_static", "maxminddb", @@ -3112,7 +3112,7 @@ dependencies = [ "rand 0.8.5", "rand_regex", "regex", - "reqwest 0.12.28", + "reqwest 0.13.2", "rustls", "serde", "serde_cbor", @@ -3295,24 +3295,6 @@ dependencies = [ "thiserror 2.0.18", ] -[[package]] -name = "ic-transport-types" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a775244756a5d97ff19b08071a946a4b4896904e35deb036bf215e80f2e703d" -dependencies = [ - "candid", - "hex", - "ic-certification 3.1.0", - "leb128", - "serde", - "serde_bytes", - "serde_cbor", - "serde_repr", - "sha2 0.10.9", - "thiserror 2.0.18", -] - [[package]] name = "ic-transport-types" version = "0.47.0" @@ -5189,7 +5171,6 @@ dependencies = [ "futures-core", "futures-util", "h2", - "hickory-resolver", "http 1.4.0", "http-body", "http-body-util", @@ -5199,7 +5180,6 @@ dependencies = [ "js-sys", "log", "mime_guess", - "once_cell", "percent-encoding", "pin-project-lite", "quinn", diff --git a/Cargo.toml b/Cargo.toml index ba0ba591..f92f0fc7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -53,7 +53,7 @@ ic-bn-lib-common = "0.1" ic-custom-domains-backend = "0.1" ic-custom-domains-base = "0.1" ic-http-certification = { version = "3.1.0", optional = true } -ic-transport-types = "0.45" +ic-transport-types = "0.47" ic-http-gateway-protocol = { package = "ic-http-gateway-protocol", git = "https://github.com/dfinity/ic-http-gateway-protocol", tag = "v0.5.1" } itertools = "0.14.0" lazy_static = "1.5.0" @@ -63,9 +63,9 @@ prometheus = "0.14.0" rand = { version = "0.8.5", features = ["small_rng"] } rand_regex = { version = "0.17.0", optional = true } regex = "1.11.1" -reqwest = { version = "0.12.12", default-features = false, features = [ +reqwest = { version = "0.13", default-features = false, features = [ "http2", - "rustls-tls", + "rustls", "hickory-dns", "json", "stream", diff --git a/src/routing/ic/route_provider.rs b/src/routing/ic/route_provider.rs index 0f003682..fc5f7c81 100644 --- a/src/routing/ic/route_provider.rs +++ b/src/routing/ic/route_provider.rs @@ -2,14 +2,10 @@ use std::{sync::Arc, time::Duration}; use anyhow::anyhow; use derive_new::new; -use ic_bn_lib::ic_agent::agent::{ - http_transport::reqwest_transport::reqwest::Client as AgentClient, - route_provider::{ - RoundRobinRouteProvider, RouteProvider, - dynamic_routing::{ - dynamic_route_provider::DynamicRouteProviderBuilder, node::Node, - snapshot::latency_based_routing::LatencyRoutingSnapshot, - }, +use ic_bn_lib::ic_agent::agent::route_provider::{ + RoundRobinRouteProvider, RouteProvider, + dynamic_routing::{ + dynamic_route_provider::DynamicRouteProviderBuilder, node::Node, }, }; use ic_bn_lib_common::{principal, traits::Healthy}; @@ -63,29 +59,23 @@ pub async fn setup_route_provider( } let route_provider = { - let snapshot = - cli.ic - .ic_use_k_top_api_nodes - .map_or_else(LatencyRoutingSnapshot::new, |k| { - info!( - "Using up to k_top={k} API Nodes with best score for dynamic routing" - ); - LatencyRoutingSnapshot::new().set_k_top_nodes(k) - }); + if let Some(k) = cli.ic.ic_use_k_top_api_nodes { + info!( + "Using up to k_top={k} API Nodes with best score for dynamic routing" + ); + } - // This temporary client is only needed for the instantiation. It is later overridden by the checker/fetcher accepting the reqwest_client. - let tmp_client = AgentClient::builder() - .build() - .expect("failed to build the client"); let checker = HealthChecker::new(reqwest_client.clone(), CHECK_TIMEOUT); let subnet_id = principal!(MAINNET_ROOT_SUBNET_ID); let fetcher = NodesFetcher::new(reqwest_client, subnet_id, None); let route_provider = - DynamicRouteProviderBuilder::new(snapshot, api_seed_nodes, Arc::new(tmp_client)) - .with_checker(Arc::new(checker)) - .with_fetcher(Arc::new(fetcher)) - .build() - .await; + DynamicRouteProviderBuilder::from_components( + api_seed_nodes, + Arc::new(fetcher), + Arc::new(checker), + cli.ic.ic_use_k_top_api_nodes, + ) + .build(); Arc::new(route_provider) }; From 68c9b85862e9483905e970f9e99d52afbf4b60fa Mon Sep 17 00:00:00 2001 From: Andrew Battat Date: Mon, 23 Mar 2026 18:37:46 +0000 Subject: [PATCH 10/10] Fix test_api_proxy --- src/routing/proxy.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/routing/proxy.rs b/src/routing/proxy.rs index d084515b..bb116c32 100644 --- a/src/routing/proxy.rs +++ b/src/routing/proxy.rs @@ -302,6 +302,8 @@ mod test { #[tokio::test] async fn test_api_proxy() { + let _ = rustls::crypto::ring::default_provider().install_default(); + // Test eventual success after 4 failures with 5xx let client = Arc::new(TestClient(AtomicUsize::new(0))); let rp = Arc::new(RoundRobinRouteProvider::new(vec!["http://foo"]).unwrap());