Revert "mobile wss use rustls_platform_verifier"

This commit is contained in:
RustDesk
2025-10-30 10:27:55 +08:00
committed by GitHub
parent b166534807
commit 84a13ad7f3
5 changed files with 7 additions and 77 deletions

View File

@@ -8,11 +8,7 @@ use crate::{
ResultType,
};
use bytes::{Bytes, BytesMut};
#[cfg(any(target_os = "android", target_os = "ios"))]
use futures::future::{select_ok, FutureExt};
use futures::{SinkExt, StreamExt};
#[cfg(any(target_os = "android", target_os = "ios"))]
use std::future::Future;
use std::{
io::{Error, ErrorKind},
net::SocketAddr,
@@ -32,19 +28,6 @@ pub struct WsFramedStream {
send_timeout: u64,
}
#[cfg(any(target_os = "android", target_os = "ios"))]
async fn await_timeout_result<F, T, E>(future: F) -> ResultType<T>
where
F: Future<Output = Result<Result<T, E>, tokio::time::error::Elapsed>>,
E: std::error::Error + Send + Sync + 'static,
{
match future.await {
Ok(Ok(result)) => Ok(result),
Ok(Err(e)) => Err(e.into()),
Err(elapsed) => Err(Error::new(ErrorKind::TimedOut, elapsed).into()),
}
}
impl WsFramedStream {
pub async fn new<T: AsRef<str>>(
url: T,
@@ -60,57 +43,8 @@ impl WsFramedStream {
.into_client_request()
.map_err(|e| Error::new(ErrorKind::Other, e))?;
let stream;
#[cfg(any(target_os = "android", target_os = "ios"))]
{
let mut futures = vec![];
let is_wss = url_str.starts_with("wss://");
let rustls_platform_verifier_initialized = !cfg!(target_os = "android")
|| crate::config::RUSTLS_PLATFORM_VERIFIER_INITIALIZED
.load(std::sync::atomic::Ordering::Relaxed);
if is_wss && rustls_platform_verifier_initialized {
use rustls_platform_verifier::ConfigVerifierExt;
use std::sync::Arc;
use tokio_rustls::rustls::ClientConfig;
use tokio_tungstenite::{connect_async_tls_with_config, Connector};
match ClientConfig::with_platform_verifier() {
Ok(config) => {
let connector = Connector::Rustls(Arc::new(config));
futures.push(
await_timeout_result(timeout(
Duration::from_millis(ms_timeout),
connect_async_tls_with_config(
request.clone(),
None,
false,
Some(connector),
),
))
.boxed(),
);
}
Err(e) => {
log::error!("with_platform_verifier failed: {:?}", e);
}
}
}
futures.push(
await_timeout_result(timeout(
Duration::from_millis(ms_timeout),
connect_async(request),
))
.boxed(),
);
let ((s, _), _) = select_ok(futures).await?;
stream = s;
}
#[cfg(not(any(target_os = "android", target_os = "ios")))]
{
let (s, _) =
timeout(Duration::from_millis(ms_timeout), connect_async(request)).await??;
stream = s;
}
let (stream, _) =
timeout(Duration::from_millis(ms_timeout), connect_async(request)).await??;
let addr = match stream.get_ref() {
MaybeTlsStream::Plain(tcp) => tcp.peer_addr()?,