diff options
author | Thomas Haller <thaller@redhat.com> | 2016-04-25 11:21:13 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2016-04-25 11:31:55 +0200 |
commit | 3adf782ab556e343a34f0153f50f72a2fd0ee791 (patch) | |
tree | f0b5f721331251fb68c6fd15695c518dcdc66470 | |
parent | 8280ab69f10b21c999f242b985db0ef81d49776f (diff) | |
download | NetworkManager-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.c | 18 |
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); |