summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2016-04-25 11:21:13 +0200
committerThomas Haller <thaller@redhat.com>2016-04-25 11:31:55 +0200
commit3adf782ab556e343a34f0153f50f72a2fd0ee791 (patch)
treef0b5f721331251fb68c6fd15695c518dcdc66470
parent8280ab69f10b21c999f242b985db0ef81d49776f (diff)
downloadNetworkManager-3adf782ab556e343a34f0153f50f72a2fd0ee791.tar.gz
libnm/vpn: consider VPN service aliases in nm_vpn_plugin_info_new_search_file()
Fixes: 4271c9650c1cfcbd487cc471099b1c0c9bbfa290
-rw-r--r--libnm-core/nm-vpn-plugin-info.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/libnm-core/nm-vpn-plugin-info.c b/libnm-core/nm-vpn-plugin-info.c
index 6fb91ab7ee..90099cd0aa 100644
--- a/libnm-core/nm-vpn-plugin-info.c
+++ b/libnm-core/nm-vpn-plugin-info.c
@@ -394,11 +394,21 @@ nm_vpn_plugin_info_new_search_file (const char *name, const char *service)
infos = _nm_vpn_plugin_info_list_load_dir (dir[i], TRUE, uid, NULL, NULL);
for (info = infos; info; info = info->next) {
- if ( (!name || nm_streq (nm_vpn_plugin_info_get_name (info->data), name))
- && (!service || nm_streq (nm_vpn_plugin_info_get_service (info->data), service))) {
- plugin_info = g_object_ref (info->data);
- break;
+ NMVpnPluginInfo *p = info->data;
+ char **aliases;
+
+ if (name && !nm_streq (nm_vpn_plugin_info_get_name (p), name))
+ continue;
+ if (service) {
+ if (!nm_streq (nm_vpn_plugin_info_get_service (p), service))
+ continue;
+
+ aliases = NM_VPN_PLUGIN_INFO_GET_PRIVATE (p)->aliases;
+ if (_nm_utils_strv_find_first (aliases, -1, service) < 0)
+ continue;
}
+ plugin_info = g_object_ref (p);
+ break;
}
g_slist_free_full (infos, g_object_unref);