0
0
mirror of https://github.com/OpenVPN/openvpn.git synced 2024-09-20 12:02:28 +02:00

Fix sequence of events for async plugin v1 handler.

If multi_client_connect_call_plugin_v1() goes to "deferred mode",
*and* there is no OPENVPN_CLIENT_CONNECT_DEFER handler, we
would read the "client specific options" file after every
(succeeded-because-not-present) call to plugin_call().

Move this to "after we have checked the deferred-cc file, and we
know for sure that we have CC_RET_SUCCEEDED".

Signed-off-by: Gert Doering <gert@greenie.muc.de>
Acked-by: Arne Schwabe <arne@rfc2549.org>
Message-Id: <20200727183436.6625-1-gert@greenie.muc.de>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg20613.html
Signed-off-by: Gert Doering <gert@greenie.muc.de>
This commit is contained in:
Gert Doering 2020-07-27 20:34:35 +02:00
parent 0a7af784c9
commit 08f3c1cab7

View File

@ -2065,8 +2065,6 @@ multi_client_connect_call_plugin_v1(struct multi_context *m,
&argv, NULL, mi->context.c2.es);
if (plug_ret == OPENVPN_PLUGIN_FUNC_SUCCESS)
{
multi_client_connect_post(m, mi, ccs->config_file,
option_types_found);
ret = CC_RET_SUCCEEDED;
}
else if (plug_ret == OPENVPN_PLUGIN_FUNC_DEFERRED)
@ -2100,6 +2098,13 @@ multi_client_connect_call_plugin_v1(struct multi_context *m,
{
ret = CC_RET_DEFERRED;
}
/* if we still think we have succeeded, do postprocessing */
if (ret == CC_RET_SUCCEEDED)
{
multi_client_connect_post(m, mi, ccs->config_file,
option_types_found);
}
cleanup:
argv_free(&argv);