From 1ae196d322733bc0539c019e0958e0872de930e7 Mon Sep 17 00:00:00 2001 From: MeexReay Date: Sat, 5 Oct 2024 01:43:20 +0300 Subject: [PATCH] keep-alive --- src/ezhttp/handler.rs | 101 ++++++++++++++++++++++-------------------- 1 file changed, 52 insertions(+), 49 deletions(-) diff --git a/src/ezhttp/handler.rs b/src/ezhttp/handler.rs index 71482df..b479098 100644 --- a/src/ezhttp/handler.rs +++ b/src/ezhttp/handler.rs @@ -17,29 +17,30 @@ pub async fn handler_connection( ) { let Ok(addr) = sock.get_ref().peer_addr() else { return; }; - let req = match HttpRequest::read(sock.get_mut(), &addr).await { - Ok(i) => i, - Err(e) => { - server.on_error(e).await; - return; - } - }; + loop { + let req = match HttpRequest::read(sock.get_mut(), &addr).await { + Ok(i) => i, + Err(e) => { + server.on_error(e).await; + return; + } + }; - let resp = match server.on_request(&req).await { - Some(i) => i, - None => { - return; - } - }; + let resp = match server.on_request(&req).await { + Some(i) => i, + None => { + return; + } + }; - match resp.write(sock.get_mut()).await { - Ok(_) => {}, - Err(e) => { - server.on_error(e).await; - return; - }, + match resp.write(sock.get_mut()).await { + Ok(_) => {}, + Err(e) => { + server.on_error(e).await; + return; + }, + } } - } #[macro_export] @@ -55,37 +56,39 @@ pub async fn handler_flowgate( server: Arc, mut sock: Stream, ) { - let addr = match read_line_lf(sock.get_mut()).await { - Ok(i) => i, - Err(e) => { - server.on_error(e).await; - return; + loop { + let addr = match read_line_lf(sock.get_mut()).await { + Ok(i) => i, + Err(e) => { + server.on_error(e).await; + return; + } } - } - .to_socket_addrs() - .unwrap() - .collect::>()[0]; + .to_socket_addrs() + .unwrap() + .collect::>()[0]; - let req = match HttpRequest::read(sock.get_mut(), &addr).await { - Ok(i) => i, - Err(e) => { - server.on_error(e).await; - return; + let req = match HttpRequest::read(sock.get_mut(), &addr).await { + Ok(i) => i, + Err(e) => { + server.on_error(e).await; + return; + } + }; + + let resp = match server.on_request(&req).await { + Some(i) => i, + None => { + return; + } + }; + + match resp.write(sock.get_mut()).await { + Ok(_) => {}, + Err(e) => { + server.on_error(e).await; + return; + }, } - }; - - let resp = match server.on_request(&req).await { - Some(i) => i, - None => { - return; - } - }; - - match resp.write(sock.get_mut()).await { - Ok(_) => {}, - Err(e) => { - server.on_error(e).await; - return; - }, } } \ No newline at end of file