fix: install rustls crypto provider once in nativeInit, not per-thread (libcrypto TLS conflict)
This commit is contained in:
@@ -207,7 +207,6 @@ impl WzpEngine {
|
|||||||
/// Returns JSON `{"rtt_ms":N,"server_fingerprint":"hex"}` or error.
|
/// Returns JSON `{"rtt_ms":N,"server_fingerprint":"hex"}` or error.
|
||||||
pub fn ping_relay(&self, address: &str) -> Result<String, anyhow::Error> {
|
pub fn ping_relay(&self, address: &str) -> Result<String, anyhow::Error> {
|
||||||
let addr: SocketAddr = address.parse()?;
|
let addr: SocketAddr = address.parse()?;
|
||||||
let _ = rustls::crypto::ring::default_provider().install_default();
|
|
||||||
|
|
||||||
let rt = tokio::runtime::Builder::new_current_thread()
|
let rt = tokio::runtime::Builder::new_current_thread()
|
||||||
.enable_all()
|
.enable_all()
|
||||||
@@ -264,7 +263,6 @@ impl WzpEngine {
|
|||||||
) -> Result<(), anyhow::Error> {
|
) -> Result<(), anyhow::Error> {
|
||||||
use wzp_proto::{MediaTransport, SignalMessage};
|
use wzp_proto::{MediaTransport, SignalMessage};
|
||||||
|
|
||||||
let _ = rustls::crypto::ring::default_provider().install_default();
|
|
||||||
|
|
||||||
let addr: SocketAddr = relay_addr.parse()?;
|
let addr: SocketAddr = relay_addr.parse()?;
|
||||||
let seed = if seed_hex.is_empty() {
|
let seed = if seed_hex.is_empty() {
|
||||||
@@ -512,7 +510,6 @@ async fn run_call(
|
|||||||
alias: Option<&str>,
|
alias: Option<&str>,
|
||||||
state: Arc<EngineState>,
|
state: Arc<EngineState>,
|
||||||
) -> Result<(), anyhow::Error> {
|
) -> Result<(), anyhow::Error> {
|
||||||
let _ = rustls::crypto::ring::default_provider().install_default();
|
|
||||||
|
|
||||||
let bind_addr: SocketAddr = "0.0.0.0:0".parse().unwrap();
|
let bind_addr: SocketAddr = "0.0.0.0:0".parse().unwrap();
|
||||||
let endpoint = wzp_transport::create_endpoint(bind_addr, None)?;
|
let endpoint = wzp_transport::create_endpoint(bind_addr, None)?;
|
||||||
|
|||||||
@@ -77,6 +77,9 @@ pub unsafe extern "system" fn Java_com_wzp_engine_WzpEngine_nativeInit(
|
|||||||
) -> jlong {
|
) -> jlong {
|
||||||
let result = panic::catch_unwind(|| {
|
let result = panic::catch_unwind(|| {
|
||||||
init_logging();
|
init_logging();
|
||||||
|
// Install rustls crypto provider ONCE on the main thread.
|
||||||
|
// Must not be called per-thread — conflicts with Android's system libcrypto.so TLS keys.
|
||||||
|
let _ = rustls::crypto::ring::default_provider().install_default();
|
||||||
let handle = Box::new(EngineHandle {
|
let handle = Box::new(EngineHandle {
|
||||||
engine: WzpEngine::new(),
|
engine: WzpEngine::new(),
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user