From 45d2e8cf8081032b35cba9704a3665b0706b3f43 Mon Sep 17 00:00:00 2001 From: Matt Brubeck Date: Wed, 20 May 2020 08:40:49 -0700 Subject: [PATCH] Use async filesystem I/O --- src/main.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main.rs b/src/main.rs index a8e7cf6..996e476 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,6 +2,7 @@ use { async_std::{ io::prelude::*, net::{TcpListener, TcpStream}, + path::PathBuf, stream::StreamExt, task, }, @@ -9,9 +10,8 @@ use { lazy_static::lazy_static, std::{ error::Error, - fs::{File, read}, + fs::File, io::BufReader, - path::PathBuf, sync::Arc, }, url::Url, @@ -79,7 +79,7 @@ async fn connection(stream: TcpStream) -> Result { stream.write_all(b"50 Invalid request.\r\n").await?; Err(e) } - Ok(url) => match get(&url) { + Ok(url) => match get(&url).await { Err(e) => { stream.write_all(b"40 Not found, sorry.\r\n").await?; Err(e) @@ -102,12 +102,12 @@ async fn parse_request(stream: &mut TlsStream) -> Result { Ok(url) } -fn get(url: &Url) -> Result> { +async fn get(url: &Url) -> Result> { let mut path = PathBuf::from(&ARGS.content_dir); path.extend(url.path_segments().ok_or("invalid url")?); - if path.is_dir() { + if path.is_dir().await { path.push("index.gemini"); } - let response = read(&path)?; + let response = async_std::fs::read(&path).await?; Ok(response) }