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 <g...@greenie.muc.de>
---
 src/openvpn/multi.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/openvpn/multi.c b/src/openvpn/multi.c
index 9bda38b0..cfb34720 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);
 
-- 
2.26.2



_______________________________________________
Openvpn-devel mailing list
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel

Reply via email to