diff --git a/net/haproxy/pkg-descr b/net/haproxy/pkg-descr
index 22938d5de..19252be16 100644
--- a/net/haproxy/pkg-descr
+++ b/net/haproxy/pkg-descr
@@ -10,6 +10,11 @@ Plugin Changelog
Added:
* add support for unix sockets (#2040)
+* add "max connections" option to servers (#2641)
+
+Changed:
+* allow setting "max connections" to "0" (unlimited)
+* raise maximum value for "max connections" to 10000000
3.7
diff --git a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogFrontend.xml b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogFrontend.xml
index f7ed02436..682e0bb27 100644
--- a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogFrontend.xml
+++ b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogFrontend.xml
@@ -242,7 +242,7 @@
frontend.tuning_maxConnections
-
+
text
diff --git a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogServer.xml b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogServer.xml
index 01b71a120..fa2283086 100644
--- a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogServer.xml
+++ b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogServer.xml
@@ -138,6 +138,13 @@
Type certificate name or choose from list.
true
+
+ server.maxConnections
+
+ text
+
+ true
+
server.weight
diff --git a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/generalDefaults.xml b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/generalDefaults.xml
index 4a44e0aee..81a9700f7 100644
--- a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/generalDefaults.xml
+++ b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/generalDefaults.xml
@@ -5,9 +5,15 @@
haproxy.general.defaults.maxConnections
-
+
text
-
+
+
+
+ haproxy.general.defaults.maxConnectionsServers
+
+ text
+
haproxy.general.defaults.timeoutClient
diff --git a/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml b/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml
index 009938fc3..5efa6dff9 100644
--- a/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml
+++ b/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml
@@ -67,9 +67,9 @@
Y
- 1
- 500000
- Please specify a value between 1 and 500000.
+ 0
+ 10000000
+ Please specify a value between 0 and 10000000.
N
@@ -194,11 +194,17 @@
- 1
- 500000
- Please specify a value between 1 and 500000.
+ 0
+ 10000000
+ Please specify a value between 0 and 10000000.
N
+
+ 0
+ 10000000
+ Please specify a value between 0 and 10000000.
+ N
+
30s
/^([0-9]{1,8}(?:us|ms|s|m|h|d)?)/u
@@ -598,9 +604,9 @@
N
- 1
- 500000
- Please specify a value between 1 and 500000.
+ 0
+ 10000000
+ Please specify a value between 0 and 10000000.
N
@@ -1318,6 +1324,12 @@
cert
Please select a valid certificate from the list.
+
+ 0
+ 10000000
+ Please specify a value between 0 and 10000000.
+ N
+
0
256
diff --git a/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf b/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf
index bfe118cb9..b95910675 100644
--- a/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf
+++ b/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf
@@ -1095,6 +1095,9 @@ defaults
{% if OPNsense.HAProxy.general.defaults.init_addr|default("") != "" %}
default-server init-addr {{OPNsense.HAProxy.general.defaults.init_addr}}
{% endif %}
+{% if OPNsense.HAProxy.general.defaults.maxConnectionsServers|default("") != "" %}
+ default-server maxconn {{OPNsense.HAProxy.general.defaults.maxConnectionsServers}}
+{% endif %}
{% if OPNsense.HAProxy.general.defaults.customOptions|default("") != "" %}
# WARNING: pass through options below this line
{% for customOpt in OPNsense.HAProxy.general.defaults.customOptions.split("\n") %}
@@ -1725,6 +1728,8 @@ backend {{backend.name}}
{# # add all additions from healthchecks here #}
{% do server_options.append(healthcheck_additions|join(' ')) if healthcheck_additions.length != '0' %}
{% endif %}
+{# # server maxconn #}
+{% do server_options.append('maxconn ' ~ server_data.maxConnections) if server_data.maxConnections|default("") != "" %}
{# # server weight #}
{% do server_options.append('weight ' ~ server_data.weight) if server_data.weight|default("") != "" %}
{# # server role/mode #}