From: "cron2 (Code Review)" <gerrit@...515...>
To: its_Giaan <gianmarco@...2726...>
Cc: plaisthos <arne-openvpn@...1227...>,
flichtenheld <frank@...2641...>,
openvpn-devel <openvpn-devel@lists.sourceforge.net>
Subject: [Openvpn-devel] [S] Change in openvpn[master]: Multi-socket: local_list clean-up
Date: Wed, 18 Jun 2025 14:08:30 +0000 [thread overview]
Message-ID: <796eec542393d11b4ae6f23187c86c736bc43b49-HTML@...2715...> (raw)
In-Reply-To: <gerrit.1749198097000.I32effed9e273fbe8986d1f4e8da4a4d0ac216463@...2715...>
[-- Attachment #1: Type: text/plain, Size: 2896 bytes --]
cron2 has submitted this change. ( http://gerrit.openvpn.net/c/openvpn/+/1039?usp=email )
Change subject: Multi-socket: local_list clean-up
......................................................................
Multi-socket: local_list clean-up
Optimize the current local_list implementation
by replacing the static array with a resizable
one, as the static allocation serves no real
purpose, particularly on the client side.
Github: OpenVPN/openvpn#682
Change-Id: I32effed9e273fbe8986d1f4e8da4a4d0ac216463
Signed-off-by: Gianmarco De Gregori <gianmarco@...2726...>
Acked-by: Gert Doering <gert@...1296...>
Message-Id: <20250618140016.2766-1-gert@...1296...>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg31927.html
Signed-off-by: Gert Doering <gert@...1296...>
---
M src/openvpn/options.c
M src/openvpn/options.h
2 files changed, 14 insertions(+), 5 deletions(-)
diff --git a/src/openvpn/options.c b/src/openvpn/options.c
index d758a67..3cf8c2a 100644
--- a/src/openvpn/options.c
+++ b/src/openvpn/options.c
@@ -2067,12 +2067,20 @@
struct local_list *l = alloc_local_list_if_undef(ce, gc);
struct local_entry *e;
- if (l->len >= CONNECTION_LIST_SIZE)
+ if (l->len >= l->capacity)
{
- msg(msglevel, "Maximum number of 'local' options (%d) exceeded",
- CONNECTION_LIST_SIZE);
+ const int new_cap = l->capacity + 1;
+ const size_t elem_size = sizeof(*l->array);
- return NULL;
+ struct local_entry **new_array = gc_realloc(l->array, new_cap * elem_size, gc);
+ if (!new_array)
+ {
+ msg(msglevel, "Unable to process more local options: out of memory. Number of entries = %d", l->len);
+ return NULL;
+ }
+
+ l->array = new_array;
+ l->capacity = new_cap;
}
ALLOC_OBJ_CLEAR_GC(e, struct local_entry, gc);
diff --git a/src/openvpn/options.h b/src/openvpn/options.h
index b28ad58..46ec32b 100644
--- a/src/openvpn/options.h
+++ b/src/openvpn/options.h
@@ -188,8 +188,9 @@
struct local_list
{
+ int capacity;
int len;
- struct local_entry *array[CONNECTION_LIST_SIZE];
+ struct local_entry **array;
};
struct connection_list
--
To view, visit http://gerrit.openvpn.net/c/openvpn/+/1039?usp=email
To unsubscribe, or for help writing mail filters, visit http://gerrit.openvpn.net/settings
Gerrit-Project: openvpn
Gerrit-Branch: master
Gerrit-Change-Id: I32effed9e273fbe8986d1f4e8da4a4d0ac216463
Gerrit-Change-Number: 1039
Gerrit-PatchSet: 2
Gerrit-Owner: its_Giaan <gianmarco@...2726...>
Gerrit-Reviewer: cron2 <gert@...1296...>
Gerrit-Reviewer: flichtenheld <frank@...2641...>
Gerrit-Reviewer: plaisthos <arne-openvpn@...1227...>
Gerrit-CC: openvpn-devel <openvpn-devel@lists.sourceforge.net>
Gerrit-MessageType: merged
[-- Attachment #2: Type: text/html, Size: 5232 bytes --]
prev parent reply other threads:[~2025-06-18 14:08 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <gerrit.1749198097000.I32effed9e273fbe8986d1f4e8da4a4d0ac216463@...2715...>
2025-06-06 8:21 ` [Openvpn-devel] [S] Change in openvpn[master]: Multi-socket: local_list clean-up its_Giaan (Code Review)
2025-06-18 13:59 ` cron2 (Code Review)
2025-06-18 14:00 ` [Openvpn-devel] [PATCH v1] " Gert Doering
2025-06-18 14:08 ` [Openvpn-devel] [PATCH applied] " Gert Doering
2025-06-18 14:08 ` [Openvpn-devel] [S] Change in openvpn[master]: " cron2 (Code Review)
2025-06-18 14:08 ` cron2 (Code Review) [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=796eec542393d11b4ae6f23187c86c736bc43b49-HTML@...2715... \
--to=unknown@example.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.