From: Ralf Lici Date: Tue, 17 Jun 2025 08:41:28 +0000 (+0200) Subject: Preserve socket protocol during float processing X-Git-Tag: v2.7_alpha2~5 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=db9632f7f976a5e0b810d76173a38f76879d99c0;p=thirdparty%2Fopenvpn.git Preserve socket protocol during float processing During a float operation, we remove the old `mroute` object corresponding to the current multi instance from the hash table and insert a new one. With the introduction of the multi-socket feature, the `mroute` structure gained a `proto` field, which must also be set in the new instance, otherwise, hash table lookups will fail. This commit ensures that the `proto` field is propagated from the original to the new `mroute` object during float processing. Change-Id: I0e17d9aea32eab7f44ed95037f077ae6dec52053 Signed-off-by: Ralf Lici Acked-by: Gianmarco De Gregori Message-Id: <20250617084136.10215-1-gert@greenie.muc.de> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg31902.html URL: https://gerrit.openvpn.net/c/openvpn/+/1063 Signed-off-by: Gert Doering --- diff --git a/src/openvpn/multi.c b/src/openvpn/multi.c index 169af4305..a760e071d 100644 --- a/src/openvpn/multi.c +++ b/src/openvpn/multi.c @@ -3217,6 +3217,12 @@ multi_process_float(struct multi_context *m, struct multi_instance *mi, struct hash *hash = m->hash; struct gc_arena gc = gc_new(); + if (mi->real.type & MR_WITH_PROTO) + { + real.type |= MR_WITH_PROTO; + real.proto = sock->info.proto; + } + if (!mroute_extract_openvpn_sockaddr(&real, &m->top.c2.from.dest, true)) { goto done;