From 113705879f024e87e1d624c8f2cb22277c355433 Mon Sep 17 00:00:00 2001 From: hitalin Date: Thu, 2 Jul 2026 14:22:24 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20Android=20=E3=81=A7=E5=85=A8=20wss://=20?= =?UTF-8?q?=E6=8E=A5=E7=B6=9A=E3=81=8C=E5=A4=B1=E6=95=97=E3=81=99=E3=82=8B?= =?UTF-8?q?=E5=95=8F=E9=A1=8C=E3=82=92=20webpki-roots=20=E3=81=A7=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit tokio-tungstenite を rustls-tls-native-roots のみで使っていたため、 Android では root 証明書の探索 (rustls-native-certs → openssl-probe) が Termux 専用パスしか見ず 0 件になり、全 WebSocket 接続が TLS 段階で 必ず失敗していた。さらに notecli の再接続ループは初回接続成功後にしか 起動しないため、失敗は無音で恒久化していた (notedeck#506 の真因)。 rustls-tls-webpki-roots を併用すると tokio-tungstenite (tls.rs) は native certs 0 件を非致命として Mozilla 同梱ルートにフォールバック する。REST 側 (reqwest rustls-tls = webpki-roots) と同じ信頼モデルに 揃い、デスクトップは従来どおり native 優先のまま。 --- Cargo.lock | 14 ++++++++++++-- Cargo.toml | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 18b0bac..80779ac 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -761,7 +761,7 @@ dependencies = [ "tokio", "tokio-rustls", "tower-service", - "webpki-roots", + "webpki-roots 1.0.6", ] [[package]] @@ -1493,7 +1493,7 @@ dependencies = [ "wasm-bindgen-futures", "wasm-streams", "web-sys", - "webpki-roots", + "webpki-roots 1.0.6", ] [[package]] @@ -2030,6 +2030,7 @@ dependencies = [ "tokio", "tokio-rustls", "tungstenite", + "webpki-roots 0.26.11", ] [[package]] @@ -2513,6 +2514,15 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "webpki-roots" +version = "0.26.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" +dependencies = [ + "webpki-roots 1.0.6", +] + [[package]] name = "webpki-roots" version = "1.0.6" diff --git a/Cargo.toml b/Cargo.toml index a9df10b..490c60c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,7 +15,7 @@ serde = { version = "1", features = ["derive", "rc"] } serde_json = "1" tokio = { version = "1", features = ["macros", "rt-multi-thread"] } tokio-stream = { version = "0.1", features = ["sync"] } -tokio-tungstenite = { version = "0.26", features = ["rustls-tls-native-roots"] } +tokio-tungstenite = { version = "0.26", features = ["rustls-tls-native-roots", "rustls-tls-webpki-roots"] } uuid = { version = "1", features = ["v4"] } thiserror = "2.0.18" tracing = "0.1"