summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBeniamino Galvani <bgalvani@redhat.com>2017-04-07 10:23:22 +0200
committerBeniamino Galvani <bgalvani@redhat.com>2017-04-07 15:15:27 +0200
commit3cada7722d41551ff24f3b03e991eb6cfa2d953d (patch)
tree5cdd8290bad06199a7c1d86b0da91f06292228a6
parentab47a2d5fecc92fbfbf397a6923bacbc5ce3b351 (diff)
device: fix removal of pacrunner configurations
Don't try to remove the configuration if we haven't added it in the first place, for example when the connection gets deactivated before it completes or for slave connections without IP configuration. Fixes: 3ad89223d0ea9a772b650842d15583d92cf9a904
-rw-r--r--src/devices/nm-device.c12
-rw-r--r--src/vpn/nm-vpn-connection.c9
2 files changed, 17 insertions, 4 deletions
diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c
index 9168907b12..0f08f7ce60 100644
--- a/src/devices/nm-device.c
+++ b/src/devices/nm-device.c
@@ -322,6 +322,7 @@ typedef struct _NMDevicePrivate {
/* Proxy Configuration */
NMProxyConfig *proxy_config;
NMPacrunnerManager *pacrunner_manager;
+ bool proxy_config_sent;
/* IP4 configuration info */
NMIP4Config * ip4_config; /* Combined config from VPN, settings, and device */
@@ -8839,6 +8840,9 @@ reactivate_proxy_config (NMDevice *self)
{
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self);
+ if (!priv->proxy_config_sent)
+ return;
+
nm_pacrunner_manager_remove (priv->pacrunner_manager,
nm_device_get_ip_iface (self));
@@ -12509,8 +12513,11 @@ _set_state_full (NMDevice *self,
}
}
- /* Remove config from PacRunner */
- nm_pacrunner_manager_remove (priv->pacrunner_manager, nm_device_get_ip_iface (self));
+ if (priv->proxy_config_sent) {
+ nm_pacrunner_manager_remove (priv->pacrunner_manager,
+ nm_device_get_ip_iface (self));
+ priv->proxy_config_sent = FALSE;
+ }
break;
case NM_DEVICE_STATE_DISCONNECTED:
if ( priv->queued_act_request
@@ -12542,6 +12549,7 @@ _set_state_full (NMDevice *self,
priv->proxy_config,
NULL,
NULL);
+ priv->proxy_config_sent = TRUE;
}
break;
case NM_DEVICE_STATE_FAILED:
diff --git a/src/vpn/nm-vpn-connection.c b/src/vpn/nm-vpn-connection.c
index 17dd9f4a2e..464395dffa 100644
--- a/src/vpn/nm-vpn-connection.c
+++ b/src/vpn/nm-vpn-connection.c
@@ -127,6 +127,7 @@ typedef struct {
GVariant *connect_hash;
guint connect_timeout;
NMProxyConfig *proxy_config;
+ gboolean proxy_config_sent;
gboolean has_ip4;
NMIP4Config *ip4_config;
guint32 ip4_internal_gw;
@@ -578,6 +579,7 @@ _set_vpn_state (NMVpnConnection *self,
priv->proxy_config,
priv->ip4_config,
priv->ip6_config);
+ priv->proxy_config_sent = TRUE;
}
break;
case STATE_DEACTIVATING:
@@ -608,8 +610,11 @@ _set_vpn_state (NMVpnConnection *self,
}
}
- /* Remove config from PacRunner */
- nm_pacrunner_manager_remove (nm_pacrunner_manager_get(), nm_connection_get_uuid (applied));
+ if (priv->proxy_config_sent) {
+ nm_pacrunner_manager_remove (nm_pacrunner_manager_get(),
+ nm_connection_get_uuid (applied));
+ priv->proxy_config_sent = FALSE;
+ }
break;
case STATE_FAILED:
case STATE_DISCONNECTED: