]> git.ipfire.org Git - thirdparty/openvpn.git/commitdiff
dco: bail out when no peer-specific message is delivered
authorAntonio Quartulli <a@unstable.cc>
Tue, 3 Jan 2023 20:23:29 +0000 (21:23 +0100)
committerGert Doering <gert@greenie.muc.de>
Sat, 7 Jan 2023 17:02:45 +0000 (18:02 +0100)
multi_process_incoming_dco() is currently partly processing
messages that were actually discarded. This results in a bogus
message being printed:

  "Received packet for peer-id unknown to OpenVPN: -1, type 0, reason 2"

Change the flow so that we bail out immediately when we know that no
message was truly delivered by DCO.
Currently this can be verified by checking that the peer_is is greater
than -1.

Signed-off-by: Antonio Quartulli <a@unstable.cc>
Acked-by: Arne Schwabe <arne@rfc2549.org>
Message-Id: <20230103202330.1835-2-a@unstable.cc>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg25882.html
Signed-off-by: Gert Doering <gert@greenie.muc.de>
src/openvpn/multi.c

index 99c1f90c8c7f71c9e273e960d39bfd78812a63eb..8aa5872c4ac32f62a61130008be713f2fb975f29 100644 (file)
@@ -3270,7 +3270,15 @@ multi_process_incoming_dco(struct multi_context *m)
 
     int peer_id = dco->dco_message_peer_id;
 
-    if ((peer_id >= 0) && (peer_id < m->max_clients) && (m->instances[peer_id]))
+    /* no peer-specific message delivered -> nothing to process.
+     * bail out right away
+     */
+    if (peer_id < 0)
+    {
+        return ret > 0;
+    }
+
+    if ((peer_id < m->max_clients) && (m->instances[peer_id]))
     {
         mi = m->instances[peer_id];
         if (dco->dco_message_type == OVPN_CMD_PACKET)