From 41c95fc5b6b1c8bc4b944d889414a4197a23837b Mon Sep 17 00:00:00 2001 From: metamuffin Date: Sat, 21 Sep 2024 12:48:36 +0200 Subject: reg: connection test --- server/client-lib/src/network/tokio.rs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'server/client-lib') diff --git a/server/client-lib/src/network/tokio.rs b/server/client-lib/src/network/tokio.rs index 60cafd95..3f68e091 100644 --- a/server/client-lib/src/network/tokio.rs +++ b/server/client-lib/src/network/tokio.rs @@ -15,7 +15,7 @@ along with this program. If not, see . */ -use anyhow::Result; +use anyhow::{anyhow, Result}; use futures_util::{ stream::{SplitSink, SplitStream, StreamExt}, SinkExt, TryStreamExt, @@ -39,8 +39,8 @@ pub struct Network { } impl Network { - pub async fn connect(addr: &str) -> Result { - let (parts, _) = addr.into_client_request().unwrap().into_parts(); + pub async fn connect(uri: &str) -> Result { + let (parts, _) = uri.into_client_request().unwrap().into_parts(); let mut builder = Request::builder() .uri(parts.uri.clone().clone()) .method(parts.method.clone()) @@ -64,7 +64,18 @@ impl Network { info!("Connecting: host={host:?} port={port}"); let stream = TcpStream::connect((host, port)).await?; - stream.set_nodelay(true).unwrap(); + Self::connect_raw(stream, uri).await + } + pub async fn connect_raw(stream: TcpStream, uri: &str) -> Result { + let (parts, _) = uri.into_client_request()?.into_parts(); + let mut builder = Request::builder() + .uri(parts.uri.clone().clone()) + .method(parts.method.clone()) + .version(parts.version); + *builder.headers_mut().ok_or(anyhow!("???"))? = parts.headers.clone(); + let request = builder.body(())?; + + stream.set_nodelay(true)?; let (sock, _) = client_async_tls_with_config(request, stream, None, None).await?; info!("Handshake complete."); let (sock_send, sock_recv) = sock.split(); -- cgit v1.2.3-70-g09d2