[network-manager-applet/bg/vpn-state-rh1442782: 1/4] applet: fix handling of VPN state changes
- From: Beniamino Galvani <bgalvani src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [network-manager-applet/bg/vpn-state-rh1442782: 1/4] applet: fix handling of VPN state changes
- Date: Wed, 19 Apr 2017 12:44:58 +0000 (UTC)
commit 7903a864d6020b11b171e84790cad22260c27d5a
Author: Beniamino Galvani <bgalvani redhat com>
Date: Wed Apr 19 11:05:50 2017 +0200
applet: fix handling of VPN state changes
We now subscribe to the "state-changed" signal of the active
connection; update vpn_connection_state_changed() to use the correct
enum values.
src/applet.c | 72 +++++++++++++++++----------------------------------------
1 files changed, 22 insertions(+), 50 deletions(-)
---
diff --git a/src/applet.c b/src/applet.c
index 812877d..2c0f3d3 100644
--- a/src/applet.c
+++ b/src/applet.c
@@ -849,16 +849,12 @@ applet_is_any_vpn_activating (NMApplet *applet)
connections = nm_client_get_active_connections (applet->nm_client);
for (i = 0; connections && (i < connections->len); i++) {
NMActiveConnection *candidate = NM_ACTIVE_CONNECTION (g_ptr_array_index (connections, i));
- NMVpnConnectionState vpn_state;
+ NMActiveConnectionState state;
if (NM_IS_VPN_CONNECTION (candidate)) {
- vpn_state = nm_vpn_connection_get_vpn_state (NM_VPN_CONNECTION (candidate));
- if ( vpn_state == NM_VPN_CONNECTION_STATE_PREPARE
- || vpn_state == NM_VPN_CONNECTION_STATE_NEED_AUTH
- || vpn_state == NM_VPN_CONNECTION_STATE_CONNECT
- || vpn_state == NM_VPN_CONNECTION_STATE_IP_CONFIG_GET) {
+ state = nm_active_connection_get_state (candidate);
+ if (state == NM_ACTIVE_CONNECTION_STATE_ACTIVATING)
return TRUE;
- }
}
}
return FALSE;
@@ -870,6 +866,9 @@ make_active_failure_message (NMActiveConnection *active,
NMApplet *applet)
{
NMConnection *connection;
+ const GPtrArray *devices;
+ NMDevice *device;
+ const char *verb;
g_return_val_if_fail (active != NULL, NULL);
@@ -877,8 +876,15 @@ make_active_failure_message (NMActiveConnection *active,
switch (reason) {
case NM_ACTIVE_CONNECTION_STATE_REASON_DEVICE_DISCONNECTED:
- return g_strdup_printf (_("\nThe VPN connection “%s” failed because the network connection
was interrupted."),
- nm_connection_get_id (connection));
+ devices = nm_active_connection_get_devices (active);
+ device = devices && devices->len > 0 ? devices->pdata[0] : NULL;
+ if (device && nm_device_get_state (device) == NM_DEVICE_STATE_DISCONNECTED)
+ verb = "disconnected";
+ else
+ verb = "failed";
+
+ return g_strdup_printf (_("\nThe VPN connection “%s” %s because the network connection was
interrupted."),
+ verb, nm_connection_get_id (connection));
case NM_ACTIVE_CONNECTION_STATE_REASON_SERVICE_STOPPED:
return g_strdup_printf (_("\nThe VPN connection “%s” failed because the VPN service stopped
unexpectedly."),
nm_connection_get_id (connection));
@@ -908,34 +914,9 @@ make_active_failure_message (NMActiveConnection *active,
return g_strdup_printf (_("\nThe VPN connection “%s” failed."), nm_connection_get_id (connection));
}
-static char *
-make_vpn_disconnection_message (NMVpnConnection *vpn,
- NMActiveConnectionStateReason reason,
- NMApplet *applet)
-{
- NMConnection *connection;
-
- g_return_val_if_fail (vpn != NULL, NULL);
-
- connection = (NMConnection *) nm_active_connection_get_connection (NM_ACTIVE_CONNECTION (vpn));
-
- switch (reason) {
- case NM_ACTIVE_CONNECTION_STATE_REASON_DEVICE_DISCONNECTED:
- return g_strdup_printf (_("\nThe VPN connection “%s” disconnected because the network
connection was interrupted."),
- nm_connection_get_id (connection));
- case NM_ACTIVE_CONNECTION_STATE_REASON_SERVICE_STOPPED:
- return g_strdup_printf (_("\nThe VPN connection “%s” disconnected because the VPN service
stopped."),
- nm_connection_get_id (connection));
- default:
- break;
- }
-
- return g_strdup_printf (_("\nThe VPN connection “%s” disconnected."), nm_connection_get_id
(connection));
-}
-
static void
vpn_connection_state_changed (NMVpnConnection *vpn,
- NMVpnConnectionState state,
+ NMActiveConnectionState state,
NMActiveConnectionStateReason reason,
gpointer user_data)
{
@@ -948,16 +929,13 @@ vpn_connection_state_changed (NMVpnConnection *vpn,
vpn_activating = applet_is_any_vpn_activating (applet);
switch (state) {
- case NM_VPN_CONNECTION_STATE_PREPARE:
- case NM_VPN_CONNECTION_STATE_NEED_AUTH:
- case NM_VPN_CONNECTION_STATE_CONNECT:
- case NM_VPN_CONNECTION_STATE_IP_CONFIG_GET:
+ case NM_ACTIVE_CONNECTION_STATE_ACTIVATING:
/* Be sure to turn animation timeout on here since the dbus signals
* for new active connections might not have come through yet.
*/
vpn_activating = TRUE;
break;
- case NM_VPN_CONNECTION_STATE_ACTIVATED:
+ case NM_ACTIVE_CONNECTION_STATE_ACTIVATED:
banner = nm_vpn_connection_get_banner (vpn);
if (banner && strlen (banner))
msg = g_strdup_printf (_("VPN connection has been successfully
established.\n\n%s\n"), banner);
@@ -969,22 +947,15 @@ vpn_connection_state_changed (NMVpnConnection *vpn,
PREF_DISABLE_VPN_NOTIFICATIONS);
g_free (msg);
break;
- case NM_VPN_CONNECTION_STATE_FAILED:
+ case NM_ACTIVE_CONNECTION_STATE_DEACTIVATED:
+ if (reason == NM_ACTIVE_CONNECTION_STATE_REASON_USER_DISCONNECTED)
+ break;
title = _("VPN Connection Failed");
msg = make_active_failure_message (NM_ACTIVE_CONNECTION (vpn), reason, applet);
applet_do_notify_with_pref (applet, title, msg, "gnome-lockscreen",
PREF_DISABLE_VPN_NOTIFICATIONS);
g_free (msg);
break;
- case NM_VPN_CONNECTION_STATE_DISCONNECTED:
- if (reason != NM_ACTIVE_CONNECTION_STATE_REASON_USER_DISCONNECTED) {
- title = _("VPN Connection Failed");
- msg = make_vpn_disconnection_message (vpn, reason, applet);
- applet_do_notify_with_pref (applet, title, msg, "gnome-lockscreen",
- PREF_DISABLE_VPN_NOTIFICATIONS);
- g_free (msg);
- }
- break;
default:
break;
}
@@ -2177,6 +2148,7 @@ applet_common_device_state_changed (NMDevice *device,
device_activating = applet_is_any_device_activating (applet);
vpn_activating = applet_is_any_vpn_activating (applet);
+
switch (new_state) {
case NM_DEVICE_STATE_PREPARE:
case NM_DEVICE_STATE_CONFIG:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]