Without this, replies to commands from the management client
are sometimes lost if the server is writing when a command
comes in and leads to a recursive call to this function.
For some reason I've not been able to trigger this on Linux,
but it does sometimes happen on Windows during intense write
activity by openvpn.exe sending log lines to the management
client.
Signed-off-by: Selva Nair <selva.nair@gmail.com>
Acked-by: Gert Doering <gert@greenie.muc.de>
Message-Id: <
20220728034508.15180-2-selva.nair@gmail.com>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg24751.html
Signed-off-by: Gert Doering <gert@greenie.muc.de>
(cherry picked from commit
4dfd592ff1ee18aa4859264c8a341dfa1a291988)
#define AF_DID_PUSH (1<<0)
#define AF_DID_RESET (1<<1)
-
- if (!recursive_level) /* don't allow recursion */
+ if (recursive_level < 5) /* limit recursion */
{
struct gc_arena gc = gc_new();
struct log_entry e;
--recursive_level;
}
+ else
+ {
+ /* cannot use msg here */
+ printf("virtual_output: message to management interface "
+ "dropped due to recursion: <%s>\n", str);
+ }
}
/*