diff --git a/breakwater-core/src/lib.rs b/breakwater-core/src/lib.rs index 941dbca..3e9976a 100644 --- a/breakwater-core/src/lib.rs +++ b/breakwater-core/src/lib.rs @@ -22,3 +22,4 @@ if cfg!(feature = "alpha") { ).as_bytes(); pub const ALT_HELP_TEXT: &[u8] = b"Stop spamming HELP!\n"; +pub const CONNECTION_DENIED_TEXT: &[u8] = b"Connection denied as connection limit is reached"; diff --git a/breakwater/src/server.rs b/breakwater/src/server.rs index 1aac0b4..9aaa35b 100644 --- a/breakwater/src/server.rs +++ b/breakwater/src/server.rs @@ -4,6 +4,7 @@ use std::collections::HashMap; use std::{cmp::min, net::IpAddr, sync::Arc, time::Duration}; use breakwater_core::framebuffer::FrameBuffer; +use breakwater_core::CONNECTION_DENIED_TEXT; use breakwater_parser::{original::OriginalParser, Parser, ParserError}; use log::{debug, error, info}; use memadvise::{Advice, MemAdviseError}; @@ -112,7 +113,10 @@ impl Server { .send(StatisticsEvent::ConnectionDenied { ip }) .await .context(WriteToStatisticsChannelSnafu)?; - // Errors if session is dropped prematurely + + // Only best effort, it's ok if this message get's missed + let _ = socket.write_all(CONNECTION_DENIED_TEXT).await; + // This can error if a connection is dropped prematurely, which is totally fine let _ = socket.shutdown().await; continue; }