From 67c59401fd40ff783c53ab84ba1d672b24db84ee Mon Sep 17 00:00:00 2001 From: Daniel Sockwell Date: Wed, 8 Jan 2020 09:51:25 -0500 Subject: [PATCH] Unix sockets WIP (#77) * Initial WIP Unix socket implementation * Bump version to v0.4.5 * Update type data --- Cargo.lock | 2 +- Cargo.toml | 2 +- src/config/deployment_cfg_types.rs | 10 +++------- src/main.rs | 10 +++++++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 75c52fb..11fd0bb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -404,7 +404,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "flodgatt" -version = "0.4.4" +version = "0.4.5" dependencies = [ "criterion 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "dotenv 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/Cargo.toml b/Cargo.toml index 229da5d..e10ef51 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "flodgatt" description = "A blazingly fast drop-in replacement for the Mastodon streaming api server" -version = "0.4.4" +version = "0.4.5" authors = ["Daniel Long Sockwell "] edition = "2018" diff --git a/src/config/deployment_cfg_types.rs b/src/config/deployment_cfg_types.rs index 8edc51e..86622f9 100644 --- a/src/config/deployment_cfg_types.rs +++ b/src/config/deployment_cfg_types.rs @@ -2,7 +2,6 @@ use crate::from_env_var; use std::{ fmt, net::{IpAddr, Ipv4Addr}, - os::unix::net::UnixListener, str::FromStr, time::Duration, }; @@ -35,12 +34,9 @@ from_env_var!( from_env_var!( /// A Unix Socket to use in place of a local address let name = Socket; - let default: Option = None; - let (env_var, allowed_values) = ("SOCKET", "a valid Unix Socket".to_string()); - let from_str = |s| match UnixListener::bind(s).ok() { - Some(socket) => Some(Some(socket)), - None => None, - }; + let default: Option = None; + let (env_var, allowed_values) = ("SOCKET", "any string".to_string()); + let from_str = |s| Some(Some(s.to_string())); ); from_env_var!( /// The time between replies sent via WebSocket diff --git a/src/main.rs b/src/main.rs index 6a7a074..2ea8cff 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,5 @@ use flodgatt::{ - config, dbg_and_die, err, + config, err, parse_client_request::{sse, user, ws}, redis_to_client_stream::{self, ClientAgent}, }; @@ -89,8 +89,12 @@ fn main() { let health = warp::path!("api" / "v1" / "streaming" / "health").map(|| "OK"); - if let Some(_socket) = cfg.unix_socket.0.as_ref() { - dbg_and_die!("Unix socket support not yet implemented"); + if let Some(socket) = &*cfg.unix_socket { + warn!("Using Unix sockets is a WIP that is currently unsupported and untested."); + std::fs::remove_file(socket).unwrap(); + use tokio::net::UnixListener; + let incoming = UnixListener::bind(socket).unwrap().incoming(); + warp::serve(health.or(websocket_routes.or(sse_routes).with(cors))).run_incoming(incoming); } else { warp::serve(health.or(websocket_routes.or(sse_routes).with(cors))).run(server_addr); }