diff --git a/examples/live_federation/main.rs b/examples/live_federation/main.rs index 5e509b5..dc593b1 100644 --- a/examples/live_federation/main.rs +++ b/examples/live_federation/main.rs @@ -12,8 +12,10 @@ use axum::{ Router, }; use error::Error; -use std::sync::{Arc, Mutex}; -use tokio::net::TcpListener; +use std::{ + net::ToSocketAddrs, + sync::{Arc, Mutex}, +}; use tracing::log::{info, LevelFilter}; mod activities; @@ -58,8 +60,12 @@ async fn main() -> Result<(), Error> { .route("/.well-known/webfinger", get(webfinger)) .layer(FederationMiddleware::new(config)); - let addr = TcpListener::bind(BIND_ADDRESS).await?; - axum::serve(addr, app.into_make_service()).await?; + let addr = BIND_ADDRESS + .to_socket_addrs()? + .next() + .expect("Failed to lookup domain name"); + let listener = tokio::net::TcpListener::bind(addr).await?; + axum::serve(listener, app.into_make_service()).await?; Ok(()) } diff --git a/examples/local_federation/axum/http.rs b/examples/local_federation/axum/http.rs index 3ac72f6..dd9d002 100644 --- a/examples/local_federation/axum/http.rs +++ b/examples/local_federation/axum/http.rs @@ -22,7 +22,7 @@ use axum::{ Router, }; use serde::Deserialize; -use std::net::TcpListener; +use std::net::ToSocketAddrs; use tracing::info; pub fn listen(config: &FederationConfig) -> Result<(), Error> { @@ -35,10 +35,18 @@ pub fn listen(config: &FederationConfig) -> Result<(), Error> { .route("/.well-known/webfinger", get(webfinger)) .layer(FederationMiddleware::new(config)); - let addr = tokio::net::TcpListener::from_std(TcpListener::bind(hostname)?)?; - let server = axum::serve(addr, app.into_make_service()); + let addr = hostname + .to_socket_addrs()? + .next() + .expect("Failed to lookup domain name"); + let fut = async move { + let listener = tokio::net::TcpListener::bind(addr).await.unwrap(); + axum::serve(listener, app.into_make_service()) + .await + .unwrap(); + }; - tokio::spawn(async move { server.await.unwrap() }); + tokio::spawn(fut); Ok(()) } diff --git a/src/activity_queue.rs b/src/activity_queue.rs index ad25402..c666e7a 100644 --- a/src/activity_queue.rs +++ b/src/activity_queue.rs @@ -424,7 +424,6 @@ mod tests { use bytes::Bytes; use http::{HeaderMap, StatusCode}; use std::time::Instant; - use tokio::net::TcpListener; use tracing::debug; // This will periodically send back internal errors to test the retry @@ -452,12 +451,10 @@ mod tests { .route("/", post(dodgy_handler)) .with_state(state); - axum::serve( - TcpListener::bind("0.0.0.0:8002").await.unwrap(), - app.into_make_service(), - ) - .await - .unwrap(); + let listener = tokio::net::TcpListener::bind("0.0.0.0:8002").await.unwrap(); + axum::serve(listener, app.into_make_service()) + .await + .unwrap(); } #[tokio::test(flavor = "multi_thread")] diff --git a/src/activity_sending.rs b/src/activity_sending.rs index 46c1440..4971485 100644 --- a/src/activity_sending.rs +++ b/src/activity_sending.rs @@ -242,7 +242,6 @@ mod tests { sync::{atomic::AtomicUsize, Arc}, time::Instant, }; - use tokio::net::TcpListener; use tracing::info; // This will periodically send back internal errors to test the retry @@ -262,12 +261,10 @@ mod tests { .route("/", post(dodgy_handler)) .with_state(state); - axum::serve( - TcpListener::bind("0.0.0.0:8001").await.unwrap(), - app.into_make_service(), - ) - .await - .unwrap(); + let listener = tokio::net::TcpListener::bind("0.0.0.0:8001").await.unwrap(); + axum::serve(listener, app.into_make_service()) + .await + .unwrap(); } #[tokio::test(flavor = "multi_thread")] diff --git a/src/config.rs b/src/config.rs index 608539a..b120ba9 100644 --- a/src/config.rs +++ b/src/config.rs @@ -26,7 +26,6 @@ use bytes::Bytes; use derive_builder::Builder; use dyn_clone::{clone_trait_object, DynClone}; use moka::future::Cache; -use once_cell::sync::Lazy; use regex::Regex; use reqwest::{redirect::Policy, Client, Request}; use reqwest_middleware::{ClientWithMiddleware, RequestBuilder}; @@ -38,6 +37,7 @@ use std::{ sync::{ atomic::{AtomicU32, Ordering}, Arc, + LazyLock, }, time::Duration, }; @@ -114,8 +114,8 @@ pub struct FederationConfig { pub(crate) queue_retry_count: usize, } -pub(crate) static DOMAIN_REGEX: Lazy = - Lazy::new(|| Regex::new(r"^[a-zA-Z0-9.-]*$").expect("compile regex")); +pub(crate) static DOMAIN_REGEX: LazyLock = + LazyLock::new(|| Regex::new(r"^[a-zA-Z0-9.-]*$").expect("compile regex")); impl FederationConfig { /// Returns a new config builder with default values. diff --git a/src/lib.rs b/src/lib.rs index 998d00c..c53fec8 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -31,6 +31,7 @@ use crate::{ traits::{ActivityHandler, Actor, Object}, }; pub use activitystreams_kinds as kinds; +pub use serde_json; use serde::{de::DeserializeOwned, Deserialize}; use url::Url;