aboutsummaryrefslogtreecommitdiff
path: root/src/zenhttp/servers
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2026-03-17 22:57:20 +0100
committerGitHub Enterprise <[email protected]>2026-03-17 22:57:20 +0100
commitd0d40b36b306236428a764349dbff98d38cf7dbd (patch)
tree2a5511a99eea146b6f7f3632fb3194394e508360 /src/zenhttp/servers
parentSuppressed C5105 when building rpmalloc (#852) (diff)
downloadzen-d0d40b36b306236428a764349dbff98d38cf7dbd.tar.xz
zen-d0d40b36b306236428a764349dbff98d38cf7dbd.zip
zen hub port reuse (#850)
- Feature: Added `--allow-port-probing` option to control whether zenserver searches for a free port on startup (default: true, automatically false when --dedicated is set) - Feature: Added new hub options for controlling provisioned storage server instances: - `--hub-instance-http` - HTTP server implementation for instances (asio/httpsys) - `--hub-instance-http-threads` - Number of HTTP connection threads per instance - `--hub-instance-corelimit` - Limit CPU concurrency per instance - Improvement: Hub now manages a deterministic port pool for provisioned instances allowing reuse of unused ports
Diffstat (limited to 'src/zenhttp/servers')
-rw-r--r--src/zenhttp/servers/httpasio.cpp4
-rw-r--r--src/zenhttp/servers/httpasio.h1
-rw-r--r--src/zenhttp/servers/httpsys.cpp2
-rw-r--r--src/zenhttp/servers/httpsys.h1
4 files changed, 5 insertions, 3 deletions
diff --git a/src/zenhttp/servers/httpasio.cpp b/src/zenhttp/servers/httpasio.cpp
index 9f4875eaf..a2cae8762 100644
--- a/src/zenhttp/servers/httpasio.cpp
+++ b/src/zenhttp/servers/httpasio.cpp
@@ -2182,7 +2182,7 @@ HttpAsioServerImpl::Start(uint16_t Port, const AsioConfig& Config)
if (!Config.NoNetwork)
{
m_Acceptor.reset(
- new asio_http::HttpAcceptor(*this, m_IoService, Port, Config.ForceLoopback, /*AllowPortProbing */ !Config.IsDedicatedServer));
+ new asio_http::HttpAcceptor(*this, m_IoService, Port, Config.ForceLoopback, /*AllowPortProbing */ Config.AllowPortProbing));
if (!m_Acceptor->IsValid())
{
@@ -2224,7 +2224,7 @@ HttpAsioServerImpl::Start(uint16_t Port, const AsioConfig& Config)
*m_SslContext,
gsl::narrow<uint16_t>(Config.HttpsPort),
Config.ForceLoopback,
- /*AllowPortProbing*/ !Config.IsDedicatedServer));
+ /*AllowPortProbing*/ Config.AllowPortProbing));
if (m_HttpsAcceptor->IsValid())
{
diff --git a/src/zenhttp/servers/httpasio.h b/src/zenhttp/servers/httpasio.h
index 21d10170e..154c87d9c 100644
--- a/src/zenhttp/servers/httpasio.h
+++ b/src/zenhttp/servers/httpasio.h
@@ -12,6 +12,7 @@ struct AsioConfig
bool ForceLoopback = false;
bool IsDedicatedServer = false;
bool NoNetwork = false;
+ bool AllowPortProbing = true;
std::string UnixSocketPath;
#if ZEN_USE_OPENSSL
int HttpsPort = 0; // 0 = auto-assign; set CertFile/KeyFile to enable HTTPS
diff --git a/src/zenhttp/servers/httpsys.cpp b/src/zenhttp/servers/httpsys.cpp
index f8fb1c9be..9fe9a2254 100644
--- a/src/zenhttp/servers/httpsys.cpp
+++ b/src/zenhttp/servers/httpsys.cpp
@@ -1153,7 +1153,7 @@ HttpSysServer::RegisterHttpUrls(int BasePort)
m_BaseUris.clear();
- const bool AllowPortProbing = !m_InitialConfig.IsDedicatedServer;
+ const bool AllowPortProbing = m_InitialConfig.AllowPortProbing;
const bool AllowLocalOnly = !m_InitialConfig.IsDedicatedServer;
int EffectivePort = BasePort;
diff --git a/src/zenhttp/servers/httpsys.h b/src/zenhttp/servers/httpsys.h
index ca465ad00..88ec13834 100644
--- a/src/zenhttp/servers/httpsys.h
+++ b/src/zenhttp/servers/httpsys.h
@@ -22,6 +22,7 @@ struct HttpSysConfig
bool IsRequestLoggingEnabled = false;
bool IsDedicatedServer = false;
bool ForceLoopback = false;
+ bool AllowPortProbing = true;
int HttpsPort = 0; // 0 = HTTPS disabled
std::string CertThumbprint; // Hex SHA-1 (40 chars) for auto SSL binding
std::string CertStoreName = "MY"; // Windows certificate store name