From 300e77b30c537afefbffe1bd70975b5a215fc708 Mon Sep 17 00:00:00 2001 From: Marc 'risson' Schmitt Date: Wed, 8 Apr 2026 14:52:12 +0000 Subject: [PATCH] packages/ak-axum/server: cleanup unix socket (#21477) --- packages/ak-axum/src/server.rs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/packages/ak-axum/src/server.rs b/packages/ak-axum/src/server.rs index 5d5ebbb696..cde54326d9 100644 --- a/packages/ak-axum/src/server.rs +++ b/packages/ak-axum/src/server.rs @@ -10,7 +10,7 @@ use axum_server::{ tls_rustls::{RustlsAcceptor, RustlsConfig}, }; use eyre::Result; -use tracing::info; +use tracing::{info, trace}; use crate::accept::{proxy_protocol::ProxyProtocolAcceptor, tls::TlsAcceptor}; @@ -73,11 +73,23 @@ pub(crate) async fn run_unix( let handle = Handle::new(); arbiter.add_unix_handle(handle.clone()).await; - let res = axum_server::Server::bind(addr) + if !allow_failure && let Some(path) = addr.as_pathname() { + trace!(?addr, "removing socket"); + if let Err(err) = std::fs::remove_file(path) { + trace!(?err, "failed to remove socket, ignoring"); + } + } + let res = axum_server::Server::bind(addr.clone()) .acceptor(DefaultAcceptor::new()) .handle(handle) .serve(router.into_make_service()) .await; + if let Some(path) = addr.as_pathname() { + trace!(?addr, "removing socket"); + if let Err(err) = std::fs::remove_file(path) { + trace!(?err, "failed to remove socket, ignoring"); + } + } if res.is_err() && allow_failure { arbiter.shutdown().await; return Ok(());