@@ -36,7 +36,8 @@
hash-size r v
- By default, both tables are sized at 256 buckets.
+ By default, both tables are sized at 4 times ``--max-clients`` buckets.
+ With the default of 1024 of ``--max-clients`` this gives 4096 buckets.
--bcast-buffers n
Allocate ``n`` buffers for broadcast datagrams (default :code:`256`).
@@ -414,7 +414,7 @@
iroute-ipv6 ipv6addr/bits
--max-clients n
- Limit server to a maximum of ``n`` concurrent clients.
+ Limit server to a maximum of ``n`` concurrent clients. Defaults to 1024.
--max-routes-per-client n
Allow a maximum of ``n`` internal routes per client (default
@@ -849,8 +849,6 @@
#endif
o->vlan_accept = VLAN_ALL;
o->vlan_pvid = 1;
- o->real_hash_size = 256;
- o->virtual_hash_size = 256;
o->n_bcast_buf = 256;
o->tcp_queue_limit = 64;
o->max_clients = 1024;
@@ -3724,6 +3722,22 @@
gc_free(&gc);
}
#endif /* if defined(_WIN32) || defined(TARGET_ANDROID) */
+/**
+ * Sets the internal hash maps sizes according to the max_clients
+ *
+ */
+static void
+helper_hashmap_sizes(struct options *o)
+{
+ if (!o->real_hash_size)
+ {
+ o->real_hash_size = 4 * o->max_clients;
+ }
+ if (!o->virtual_hash_size)
+ {
+ o->virtual_hash_size = 4 * o->max_clients;
+ }
+}
static void
options_postprocess_mutate(struct options *o, struct env_set *es)
@@ -3739,6 +3753,11 @@
helper_keepalive(o);
helper_tcp_nodelay(o);
+ if (o->mode == MODE_SERVER)
+ {
+ helper_hashmap_sizes(o);
+ }
+
options_postprocess_setdefault_ncpciphers(o);
options_set_backwards_compatible_options(o);
options_process_mutate_prf(o);