From d4a42f4ede516ae013626a86b298f2db9766987b Mon Sep 17 00:00:00 2001 From: Tunglies Date: Wed, 16 Apr 2025 17:29:47 +0800 Subject: [PATCH] fix: socket-based mihomo communication can not switch profile --- .../crate_mihomo_api/src/platform/unix.rs | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src-tauri/src_crates/crate_mihomo_api/src/platform/unix.rs b/src-tauri/src_crates/crate_mihomo_api/src/platform/unix.rs index fecdbebb..dbccca09 100644 --- a/src-tauri/src_crates/crate_mihomo_api/src/platform/unix.rs +++ b/src-tauri/src_crates/crate_mihomo_api/src/platform/unix.rs @@ -36,21 +36,28 @@ impl UnixClient { ) -> Result { let uri = self.generate_unix_path(socket_path.as_str(), path).await; - let mut request_builder = Request::builder().method(method).uri(uri); + let mut request_builder = Request::builder().method(method.clone()).uri(uri); let body_bytes = if let Some(body) = body { - request_builder = request_builder.header( - HeaderName::from_static("Content-Type"), - HeaderValue::from_static("application/json"), - ); + if method != Method::PUT { + request_builder = request_builder.header( + HeaderName::from_static("Content-Type"), + HeaderValue::from_static("application/json"), + ); + } Bytes::from(serde_json::to_vec(&body)?) } else { Bytes::new() }; let request = request_builder.body(Full::new(body_bytes))?; - let response = self.client.lock().await.request(request).await?; + + if method == Method::PUT { + let json_value = serde_json::Value::Null; + return Ok(json_value); + } + let body_bytes = response.into_body().collect().await?.to_bytes(); let json_value = serde_json::from_slice(&body_bytes)?;