[Openvpn-devel,1/2] Fix sequence of events for async plugin v1 handler.
Commit Message
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>
---
src/openvpn/multi.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
Comments
Am 27.07.20 um 20:34 schrieb Gert Doering:
> 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".
>
Not tested but the code change and explaination are sound.
Acked-By: Arne Schwabe <arne@rfc2549.org>
Patch has been applied to the master branch.
(I have tested this on the "t_server" test rig, of course :) )
commit 08f3c1cab7367fc8447001db34fd9627d60ba2b2
Author: Gert Doering
Date: Mon Jul 27 20:34:35 2020 +0200
Fix sequence of events for async plugin v1 handler.
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>
--
kind regards,
Gert Doering
@@ -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);