From 08fcba749ab7dad137a4866645728a71c4885c65 Mon Sep 17 00:00:00 2001 From: Bendik Aagaard Lynghaug Date: Sat, 3 Oct 2026 13:43:43 +0200 Subject: [PATCH] iroh 1.3, and a socket that survives a service restart iroh 1.0.2 -> 1.3.0 (relay reconnects that keep answering, rate-limit notices from relays, the n0 DNS resolver with configurable fallbacks, relay connection metrics), iroh-mdns-address-lookup 0.4 -> 0.6, n0-future 0.1 -> 0.3. No code changes were needed; the suite passes. varde.service now keeps /run/varde across restarts (RuntimeDirectoryPreserve=yes): stopping the service removed the directory and with it the socket unit's file, leaving varde.socket "active" on an unlinked path after any service restart. The install notes say to restart the socket, which cycles both. Co-Authored-By: Claude Fable 5.1 --- Cargo.lock | 102 ++++++++++++---------------------------- dist/arch/varde.install | 4 +- dist/varde.service | 4 ++ varde-daemon/Cargo.toml | 4 +- 4 files changed, 38 insertions(+), 76 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index dba52af..bc7b633 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -780,7 +780,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccc2776f0c61eca1ca32528f85548abd1a4be8fb53d1b21c013e4f18da1e7090" dependencies = [ "data-encoding", - "syn 2.0.118", + "syn 1.0.109", ] [[package]] @@ -845,34 +845,13 @@ dependencies = [ "syn 2.0.118", ] -[[package]] -name = "derive_more" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" -dependencies = [ - "derive_more-impl 1.0.0", -] - [[package]] name = "derive_more" version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" dependencies = [ - "derive_more-impl 2.1.1", -] - -[[package]] -name = "derive_more-impl" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.118", - "unicode-xid", + "derive_more-impl", ] [[package]] @@ -1818,7 +1797,7 @@ dependencies = [ "cfg_aliases", "ctutils", "data-encoding", - "derive_more 2.1.1", + "derive_more", "ed25519-dalek", "futures-util", "getrandom 0.4.3", @@ -1830,7 +1809,7 @@ dependencies = [ "iroh-metrics", "iroh-relay", "n0-error", - "n0-future 0.3.2", + "n0-future", "n0-watcher", "netwatch", "noq", @@ -1866,7 +1845,7 @@ dependencies = [ "curve25519-dalek", "data-encoding", "data-encoding-macro", - "derive_more 2.1.1", + "derive_more", "ed25519-dalek", "getrandom 0.4.3", "n0-error", @@ -1889,7 +1868,7 @@ dependencies = [ "chrono", "constant_time_eq", "data-encoding", - "derive_more 2.1.1", + "derive_more", "genawaiter", "getrandom 0.4.3", "hex", @@ -1901,7 +1880,7 @@ dependencies = [ "iroh-util", "irpc", "n0-error", - "n0-future 0.3.2", + "n0-future", "nested_enum_utils", "noq", "postcard", @@ -1925,11 +1904,11 @@ checksum = "516e4eedc38e33ab69a6bd325520332dc3d67b25454e2d590ebb84a25240dd9a" dependencies = [ "arc-swap", "cfg_aliases", - "derive_more 2.1.1", + "derive_more", "hickory-resolver", "iroh-base", "n0-error", - "n0-future 0.3.2", + "n0-future", "ndk-context", "portable-atomic", "rand 0.10.2", @@ -1956,17 +1935,17 @@ dependencies = [ [[package]] name = "iroh-mdns-address-lookup" -version = "0.4.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c1f941695731bc3999d8c13d7e94d50e229427da81ac957eec3818264f17559" +checksum = "7afb03c296022fcb724a7bb76dbb8dcca6aac4f4eb65df161e084b7276c93d8c" dependencies = [ "data-encoding", - "derive_more 2.1.1", + "derive_more", "futures-util", "iroh", "iroh-base", "n0-error", - "n0-future 0.3.2", + "n0-future", "n0-watcher", "swarm-discovery", "tokio", @@ -2011,7 +1990,7 @@ dependencies = [ "bytes", "cfg_aliases", "data-encoding", - "derive_more 2.1.1", + "derive_more", "getrandom 0.4.3", "hickory-resolver", "http", @@ -2023,7 +2002,7 @@ dependencies = [ "iroh-metrics", "lru", "n0-error", - "n0-future 0.3.2", + "n0-future", "noq", "noq-proto", "num_enum", @@ -2054,7 +2033,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da53233419ca36bf521ed45683b7748366f9b233032891eefc2d70567a84ac54" dependencies = [ "data-encoding", - "derive_more 2.1.1", + "derive_more", "iroh-base", "n0-error", "postcard", @@ -2067,10 +2046,10 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20e41eb982f15230c55f0a70a74a514360e1f565b07861924fd0e8db172b3d00" dependencies = [ - "derive_more 2.1.1", + "derive_more", "iroh", "n0-error", - "n0-future 0.3.2", + "n0-future", "tokio", "tracing", ] @@ -2085,7 +2064,7 @@ dependencies = [ "futures-util", "irpc-derive", "n0-error", - "n0-future 0.3.2", + "n0-future", "noq", "postcard", "rcgen", @@ -2363,27 +2342,6 @@ dependencies = [ "syn 2.0.118", ] -[[package]] -name = "n0-future" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bb0e5d99e681ab3c938842b96fcb41bf8a7bb4bfdb11ccbd653a7e83e06c794" -dependencies = [ - "cfg_aliases", - "derive_more 1.0.0", - "futures-buffered", - "futures-lite", - "futures-util", - "js-sys", - "pin-project", - "send_wrapper", - "tokio", - "tokio-util", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-time", -] - [[package]] name = "n0-future" version = "0.3.2" @@ -2391,7 +2349,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2ab99dfb861450e68853d34ae665243a88b8c493d01ba957321a1e9b2312bbe" dependencies = [ "cfg_aliases", - "derive_more 2.1.1", + "derive_more", "futures-buffered", "futures-lite", "futures-util", @@ -2411,9 +2369,9 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbc618745ad0b7414b149d0517ad8b5573b2fb4d4e2717add3d2446ce1fdd826" dependencies = [ - "derive_more 2.1.1", + "derive_more", "n0-error", - "n0-future 0.3.2", + "n0-future", ] [[package]] @@ -2519,12 +2477,12 @@ dependencies = [ "atomic-waker", "bytes", "cfg_aliases", - "derive_more 2.1.1", + "derive_more", "ipnet", "js-sys", "libc", "n0-error", - "n0-future 0.3.2", + "n0-future", "n0-watcher", "netdev", "netlink-packet-core", @@ -2565,7 +2523,7 @@ checksum = "4bf95190af1bd4a00a10e8255ca0c8ddd9e9a9f5e79151d7a7eb6d56aff5dc89" dependencies = [ "bytes", "cfg_aliases", - "derive_more 2.1.1", + "derive_more", "noq-proto", "noq-udp", "pin-project-lite", @@ -2587,7 +2545,7 @@ checksum = "baa7b5ccd819a9c68a0d955e67a881032d09b1a17219b1f90b0997a0888e1a15" dependencies = [ "aes-gcm", "bytes", - "derive_more 2.1.1", + "derive_more", "enum-assoc", "fastbloom", "getrandom 0.4.3", @@ -2990,13 +2948,13 @@ checksum = "eb3713e4977408279158444a18c1a01ac9bf2e7eaf1fbfd1a19ac9cd18d90721" dependencies = [ "base64", "bytes", - "derive_more 2.1.1", + "derive_more", "hyper-util", "igd-next", "iroh-metrics", "libc", "n0-error", - "n0-future 0.3.2", + "n0-future", "netwatch", "num_enum", "rand 0.10.2", @@ -4005,7 +3963,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.4.3", + "getrandom 0.3.4", "once_cell", "rustix", "windows-sys 0.61.2", @@ -4512,7 +4470,7 @@ dependencies = [ "iroh-blobs", "iroh-mdns-address-lookup", "irpc", - "n0-future 0.1.3", + "n0-future", "postcard", "proptest", "reflink-copy", diff --git a/dist/arch/varde.install b/dist/arch/varde.install index c19e7c8..0a13f6f 100644 --- a/dist/arch/varde.install +++ b/dist/arch/varde.install @@ -5,6 +5,6 @@ post_install() { } post_upgrade() { - echo ":: Restart a running daemon to pick up the new version:" - echo " systemctl --user try-restart varde.service (and/or: systemctl try-restart varde.service)" + echo ":: Restart a running daemon to pick up the new version - the socket, not the service:" + echo " systemctl try-restart varde.socket; systemctl --user try-restart varde.socket" } diff --git a/dist/varde.service b/dist/varde.service index 19a9e8d..4e3aa36 100644 --- a/dist/varde.service +++ b/dist/varde.service @@ -16,6 +16,10 @@ Restart=on-failure DynamicUser=yes StateDirectory=varde RuntimeDirectory=varde +# The socket unit's file lives in this directory: removing it on every +# service stop (the default) left varde.socket listening on an unlinked +# path after any restart - "active" with nothing to connect to. +RuntimeDirectoryPreserve=yes NoNewPrivileges=yes ProtectSystem=strict ProtectHome=yes diff --git a/varde-daemon/Cargo.toml b/varde-daemon/Cargo.toml index 4ae1f0e..17cb0f1 100644 --- a/varde-daemon/Cargo.toml +++ b/varde-daemon/Cargo.toml @@ -19,10 +19,10 @@ iroh-blobs = { workspace = true } # Request::Put / Read carry content inline, base64. base64 = "0.22" # mDNS/local-network address lookup left iroh core in 1.0. -iroh-mdns-address-lookup = "0.4" +iroh-mdns-address-lookup = "0.6" # Interop with iroh-blobs streams and channels; both are already in the # dependency tree via iroh-blobs. -n0-future = "0.1" +n0-future = "0.3" irpc = "0.17" # Feature-gated D-Bus client for NetworkManager metered status. zbus = { version = "5", optional = true, default-features = false, features = ["tokio"] }