diff options
author | Lubomir Rintel <lkundrak@v3.sk> | 2015-10-13 11:39:44 +0200 |
---|---|---|
committer | Lubomir Rintel <lkundrak@v3.sk> | 2015-10-13 18:20:55 +0200 |
commit | fd61b217064c1b62b505d6a71211bf4340e4b3ac (patch) | |
tree | 02f1fa64a98faa98c204243697487af840b6eb61 | |
parent | 78f263a5fd8e3458feeaaddb179913c7459bd25a (diff) | |
download | NetworkManager-fd61b217064c1b62b505d6a71211bf4340e4b3ac.tar.gz |
libnm/vpn-service-plugin: remove nm_vpn_service_plugin_{get,set}_state()
The plugins set state only on failures and often forget to do that. Do the
correct status transition to STOPPED in nm_vpn_service_plugin_failure() instead.
The get_state() is only used to find out whether to fail or orderly disconnect
depending on whether we're STARTING or already STARTED. Handle that in
nm_vpn_service_plugin_disconnect() in a generic manner instead.
-rw-r--r-- | libnm/libnm.ver | 2 | ||||
-rw-r--r-- | libnm/nm-vpn-service-plugin.c | 38 | ||||
-rw-r--r-- | libnm/nm-vpn-service-plugin.h | 6 |
3 files changed, 16 insertions, 30 deletions
diff --git a/libnm/libnm.ver b/libnm/libnm.ver index a3f9282822..796b666ec3 100644 --- a/libnm/libnm.ver +++ b/libnm/libnm.ver @@ -923,7 +923,6 @@ global: nm_vpn_service_plugin_failure; nm_vpn_service_plugin_get_connection; nm_vpn_service_plugin_get_secret_flags; - nm_vpn_service_plugin_get_state; nm_vpn_service_plugin_get_type; nm_vpn_service_plugin_read_vpn_details; nm_vpn_service_plugin_secrets_required; @@ -931,5 +930,4 @@ global: nm_vpn_service_plugin_set_ip4_config; nm_vpn_service_plugin_set_ip6_config; nm_vpn_service_plugin_set_login_banner; - nm_vpn_service_plugin_set_state; } libnm_1_0_0; diff --git a/libnm/nm-vpn-service-plugin.c b/libnm/nm-vpn-service-plugin.c index 062b26c777..7fa7459967 100644 --- a/libnm/nm-vpn-service-plugin.c +++ b/libnm/nm-vpn-service-plugin.c @@ -133,7 +133,7 @@ nm_vpn_service_plugin_get_connection (NMVpnServicePlugin *plugin) return connection; } -NMVpnServiceState +static NMVpnServiceState nm_vpn_service_plugin_get_state (NMVpnServicePlugin *plugin) { g_return_val_if_fail (NM_IS_VPN_SERVICE_PLUGIN (plugin), NM_VPN_SERVICE_STATE_UNKNOWN); @@ -141,7 +141,7 @@ nm_vpn_service_plugin_get_state (NMVpnServicePlugin *plugin) return NM_VPN_SERVICE_PLUGIN_GET_PRIVATE (plugin)->state; } -void +static void nm_vpn_service_plugin_set_state (NMVpnServicePlugin *plugin, NMVpnServiceState state) { @@ -171,17 +171,24 @@ nm_vpn_service_plugin_set_login_banner (NMVpnServicePlugin *plugin, nmdbus_vpn_plugin_emit_login_banner (priv->dbus_vpn_service_plugin, banner); } +static void +_emit_failure (NMVpnServicePlugin *plugin, + NMVpnPluginFailure reason) +{ + NMVpnServicePluginPrivate *priv = NM_VPN_SERVICE_PLUGIN_GET_PRIVATE (plugin); + + g_signal_emit (plugin, signals[FAILURE], 0, reason); + nmdbus_vpn_plugin_emit_failure (priv->dbus_vpn_service_plugin, reason); +} + void nm_vpn_service_plugin_failure (NMVpnServicePlugin *plugin, NMVpnPluginFailure reason) { - NMVpnServicePluginPrivate *priv; - g_return_if_fail (NM_IS_VPN_SERVICE_PLUGIN (plugin)); - priv = NM_VPN_SERVICE_PLUGIN_GET_PRIVATE (plugin); - g_signal_emit (plugin, signals[FAILURE], 0, reason); - nmdbus_vpn_plugin_emit_failure (priv->dbus_vpn_service_plugin, reason); + _emit_failure (plugin, reason); + nm_vpn_service_plugin_disconnect (plugin, NULL); } gboolean @@ -211,6 +218,8 @@ nm_vpn_service_plugin_disconnect (NMVpnServicePlugin *plugin, GError **err) "Could not process the request because no VPN connection was active."); break; case NM_VPN_SERVICE_STATE_STARTING: + _emit_failure (plugin, NM_VPN_PLUGIN_FAILURE_CONNECT_FAILED); + /* fallthru */ case NM_VPN_SERVICE_STATE_STARTED: nm_vpn_service_plugin_set_state (plugin, NM_VPN_SERVICE_STATE_STOPPING); ret = NM_VPN_SERVICE_PLUGIN_GET_CLASS (plugin)->disconnect (plugin, err); @@ -1188,21 +1197,6 @@ nm_vpn_service_plugin_class_init (NMVpnServicePluginClass *plugin_class) G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); - /** - * NMVpnServicePlugin:state: - * - * The state of the plugin. - * - * Since: 1.2 - */ - g_object_class_install_property - (object_class, PROP_STATE, - g_param_spec_enum (NM_VPN_SERVICE_PLUGIN_STATE, "", "", - NM_TYPE_VPN_SERVICE_STATE, - NM_VPN_SERVICE_STATE_INIT, - G_PARAM_READWRITE | - G_PARAM_STATIC_STRINGS)); - /* signals */ signals[STATE_CHANGED] = g_signal_new ("state-changed", diff --git a/libnm/nm-vpn-service-plugin.h b/libnm/nm-vpn-service-plugin.h index 4fb0ed360f..dd2b52a14f 100644 --- a/libnm/nm-vpn-service-plugin.h +++ b/libnm/nm-vpn-service-plugin.h @@ -37,7 +37,6 @@ G_BEGIN_DECLS #define NM_VPN_SERVICE_PLUGIN_DBUS_SERVICE_NAME "service-name" #define NM_VPN_SERVICE_PLUGIN_DBUS_WATCH_PEER "watch-peer" -#define NM_VPN_SERVICE_PLUGIN_STATE "state" typedef struct { NM_AVAILABLE_IN_1_2 @@ -113,11 +112,6 @@ GType nm_vpn_service_plugin_get_type (void); NM_AVAILABLE_IN_1_2 GDBusConnection *nm_vpn_service_plugin_get_connection (NMVpnServicePlugin *plugin); -NM_AVAILABLE_IN_1_2 -NMVpnServiceState nm_vpn_service_plugin_get_state (NMVpnServicePlugin *plugin); -NM_AVAILABLE_IN_1_2 -void nm_vpn_service_plugin_set_state (NMVpnServicePlugin *plugin, - NMVpnServiceState state); NM_AVAILABLE_IN_1_2 void nm_vpn_service_plugin_secrets_required (NMVpnServicePlugin *plugin, |