summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenneth Rose <ken+openvpn@surfeasy.com>2012-10-01 14:47:02 -0400
committerDavid Sommerseth <davids@redhat.com>2012-10-15 18:55:27 +0200
commitaa1a1d91ca1266342762460f86427a577b51908f (patch)
treefe09e47972d196b218a3d03e5c68c01e8bb97627
parent7ab52ad0011f7ff3502d30abc718a9257d5f3916 (diff)
downloadopenvpn-aa1a1d91ca1266342762460f86427a577b51908f.tar.gz
openvpn-aa1a1d91ca1266342762460f86427a577b51908f.tar.xz
openvpn-aa1a1d91ca1266342762460f86427a577b51908f.zip
Fix v3 plugins to support returning values back to OpenVPN.
There's a small implementation issue with the V3 plugin API implementation. V3 plugins cannot return data back to OpenVPN using openvpn_plugin_args_func_return since openvpn_plugin_args_func_return.return_list is always NULL. This patch makes the behaviour identical to the V2 API (return_list is again a proper out parameter). Signed-off-by: Kenneth Rose <ken+openvpn@surfeasy.com> Acked-by: David Sommerseth <davids@redhat.com> Message-Id: CAAUdgR8VZjaO0-thFPVoQkbZ1DNG3rx+gtYYLqyfocp3yns==w@mail.gmail.com URL: http://article.gmane.org/gmane.network.openvpn.devel/7083 Signed-off-by: David Sommerseth <davids@redhat.com> (cherry picked from commit e92255f58bcfaec157c3ef59e01c40cbd04b1d43)
-rw-r--r--src/openvpn/plugin.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/openvpn/plugin.c b/src/openvpn/plugin.c
index d785dae..944d833 100644
--- a/src/openvpn/plugin.c
+++ b/src/openvpn/plugin.c
@@ -376,10 +376,10 @@ plugin_open_item (struct plugin *p,
struct openvpn_plugin_args_open_return retargs;
CLEAR(retargs);
+ retargs.return_list = retlist;
if ((*p->open3)(OPENVPN_PLUGINv3_STRUCTVER, &args, &retargs) == OPENVPN_PLUGIN_FUNC_SUCCESS) {
p->plugin_type_mask = retargs.type_mask;
p->plugin_handle = retargs.handle;
- retlist = retargs.return_list;
} else {
p->plugin_handle = NULL;
}
@@ -458,8 +458,8 @@ plugin_call_item (const struct plugin *p,
struct openvpn_plugin_args_func_return retargs;
CLEAR(retargs);
+ retargs.return_list = retlist;
status = (*p->func3)(OPENVPN_PLUGINv3_STRUCTVER, &args, &retargs);
- retlist = retargs.return_list;
} else if (p->func2)
status = (*p->func2)(p->plugin_handle, type, (const char **)a.argv, envp, per_client_context, retlist);
else if (p->func1)