From: Gert Doering Date: Mon, 27 Jul 2020 18:34:35 +0000 (+0200) Subject: Fix sequence of events for async plugin v1 handler. X-Git-Tag: v2.5_beta1~27 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=08f3c1cab7367fc8447001db34fd9627d60ba2b2;p=thirdparty%2Fopenvpn.git 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 Acked-by: Arne Schwabe 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 --- diff --git a/src/openvpn/multi.c b/src/openvpn/multi.c index 9bda38b09..cfb34720d 100644 --- a/src/openvpn/multi.c +++ b/src/openvpn/multi.c @@ -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);