libnm/libnm-glib: clean up VPN plugin timeouts
Use nm_clear_g_source().
This commit is contained in:
@@ -28,6 +28,7 @@
|
|||||||
#include "nm-utils.h"
|
#include "nm-utils.h"
|
||||||
#include "nm-connection.h"
|
#include "nm-connection.h"
|
||||||
#include "nm-dbus-glib-types.h"
|
#include "nm-dbus-glib-types.h"
|
||||||
|
#include "nm-macros-internal.h"
|
||||||
|
|
||||||
static gboolean impl_vpn_plugin_connect (NMVPNPlugin *plugin,
|
static gboolean impl_vpn_plugin_connect (NMVPNPlugin *plugin,
|
||||||
GHashTable *connection,
|
GHashTable *connection,
|
||||||
@@ -257,6 +258,7 @@ connect_timer_expired (gpointer data)
|
|||||||
NMVPNPlugin *plugin = NM_VPN_PLUGIN (data);
|
NMVPNPlugin *plugin = NM_VPN_PLUGIN (data);
|
||||||
GError *err = NULL;
|
GError *err = NULL;
|
||||||
|
|
||||||
|
NM_VPN_PLUGIN_GET_PRIVATE (plugin)->connect_timer = 0;
|
||||||
g_message ("Connect timer expired, disconnecting.");
|
g_message ("Connect timer expired, disconnecting.");
|
||||||
nm_vpn_plugin_disconnect (plugin, &err);
|
nm_vpn_plugin_disconnect (plugin, &err);
|
||||||
if (err) {
|
if (err) {
|
||||||
@@ -264,26 +266,27 @@ connect_timer_expired (gpointer data)
|
|||||||
g_error_free (err);
|
g_error_free (err);
|
||||||
}
|
}
|
||||||
|
|
||||||
return FALSE;
|
return G_SOURCE_REMOVE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
quit_timer_expired (gpointer data)
|
quit_timer_expired (gpointer data)
|
||||||
{
|
{
|
||||||
NMVPNPlugin *plugin = NM_VPN_PLUGIN (data);
|
NMVPNPlugin *self = NM_VPN_PLUGIN (data);
|
||||||
|
|
||||||
nm_vpn_plugin_emit_quit (plugin);
|
NM_VPN_PLUGIN_GET_PRIVATE (self)->quit_timer = 0;
|
||||||
|
nm_vpn_plugin_emit_quit (self);
|
||||||
return FALSE;
|
return G_SOURCE_REMOVE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
fail_stop (gpointer data)
|
fail_stop (gpointer data)
|
||||||
{
|
{
|
||||||
NMVPNPlugin *plugin = NM_VPN_PLUGIN (data);
|
NMVPNPlugin *self = NM_VPN_PLUGIN (data);
|
||||||
|
|
||||||
nm_vpn_plugin_set_state (plugin, NM_VPN_SERVICE_STATE_STOPPED);
|
NM_VPN_PLUGIN_GET_PRIVATE (self)->fail_stop_id = 0;
|
||||||
return FALSE;
|
nm_vpn_plugin_set_state (self, NM_VPN_SERVICE_STATE_STOPPED);
|
||||||
|
return G_SOURCE_REMOVE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -291,8 +294,7 @@ schedule_fail_stop (NMVPNPlugin *plugin)
|
|||||||
{
|
{
|
||||||
NMVPNPluginPrivate *priv = NM_VPN_PLUGIN_GET_PRIVATE (plugin);
|
NMVPNPluginPrivate *priv = NM_VPN_PLUGIN_GET_PRIVATE (plugin);
|
||||||
|
|
||||||
if (priv->fail_stop_id)
|
nm_clear_g_source (&priv->fail_stop_id);
|
||||||
g_source_remove (priv->fail_stop_id);
|
|
||||||
priv->fail_stop_id = g_idle_add (fail_stop, plugin);
|
priv->fail_stop_id = g_idle_add (fail_stop, plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -408,22 +410,12 @@ nm_vpn_plugin_set_ip6_config (NMVPNPlugin *plugin,
|
|||||||
nm_vpn_plugin_set_state (plugin, NM_VPN_SERVICE_STATE_STARTED);
|
nm_vpn_plugin_set_state (plugin, NM_VPN_SERVICE_STATE_STARTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
connect_timer_removed (gpointer data)
|
|
||||||
{
|
|
||||||
NM_VPN_PLUGIN_GET_PRIVATE (data)->connect_timer = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
connect_timer_start (NMVPNPlugin *plugin)
|
connect_timer_start (NMVPNPlugin *plugin)
|
||||||
{
|
{
|
||||||
NMVPNPluginPrivate *priv = NM_VPN_PLUGIN_GET_PRIVATE (plugin);
|
NMVPNPluginPrivate *priv = NM_VPN_PLUGIN_GET_PRIVATE (plugin);
|
||||||
|
|
||||||
priv->connect_timer = g_timeout_add_seconds_full (G_PRIORITY_DEFAULT,
|
priv->connect_timer = g_timeout_add_seconds (60, connect_timer_expired, plugin);
|
||||||
60,
|
|
||||||
connect_timer_expired,
|
|
||||||
plugin,
|
|
||||||
connect_timer_removed);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
@@ -638,8 +630,7 @@ nm_vpn_plugin_secrets_required (NMVPNPlugin *plugin,
|
|||||||
/* Cancel the connect timer since secrets might take a while. It'll
|
/* Cancel the connect timer since secrets might take a while. It'll
|
||||||
* get restarted when the secrets come back via NewSecrets().
|
* get restarted when the secrets come back via NewSecrets().
|
||||||
*/
|
*/
|
||||||
if (priv->connect_timer)
|
nm_clear_g_source (&priv->connect_timer);
|
||||||
g_source_remove (priv->connect_timer);
|
|
||||||
|
|
||||||
g_signal_emit (plugin, signals[SECRETS_REQUIRED], 0, message, hints);
|
g_signal_emit (plugin, signals[SECRETS_REQUIRED], 0, message, hints);
|
||||||
}
|
}
|
||||||
@@ -848,10 +839,9 @@ dispose (GObject *object)
|
|||||||
NMVPNServiceState state;
|
NMVPNServiceState state;
|
||||||
GError *err = NULL;
|
GError *err = NULL;
|
||||||
|
|
||||||
if (priv->fail_stop_id) {
|
nm_clear_g_source (&priv->fail_stop_id);
|
||||||
g_source_remove (priv->fail_stop_id);
|
nm_clear_g_source (&priv->quit_timer);
|
||||||
priv->fail_stop_id = 0;
|
nm_clear_g_source (&priv->connect_timer);
|
||||||
}
|
|
||||||
|
|
||||||
state = nm_vpn_plugin_get_state (plugin);
|
state = nm_vpn_plugin_get_state (plugin);
|
||||||
|
|
||||||
@@ -888,12 +878,6 @@ finalize (GObject *object)
|
|||||||
G_OBJECT_CLASS (nm_vpn_plugin_parent_class)->finalize (object);
|
G_OBJECT_CLASS (nm_vpn_plugin_parent_class)->finalize (object);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
quit_timer_removed (gpointer data)
|
|
||||||
{
|
|
||||||
NM_VPN_PLUGIN_GET_PRIVATE (data)->quit_timer = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
state_changed (NMVPNPlugin *plugin, NMVPNServiceState state)
|
state_changed (NMVPNPlugin *plugin, NMVPNServiceState state)
|
||||||
{
|
{
|
||||||
@@ -901,34 +885,19 @@ state_changed (NMVPNPlugin *plugin, NMVPNServiceState state)
|
|||||||
|
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case NM_VPN_SERVICE_STATE_STARTING:
|
case NM_VPN_SERVICE_STATE_STARTING:
|
||||||
/* Remove the quit timer. */
|
nm_clear_g_source (&priv->quit_timer);
|
||||||
if (priv->quit_timer)
|
nm_clear_g_source (&priv->fail_stop_id);
|
||||||
g_source_remove (priv->quit_timer);
|
|
||||||
|
|
||||||
if (priv->fail_stop_id) {
|
|
||||||
g_source_remove (priv->fail_stop_id);
|
|
||||||
priv->fail_stop_id = 0;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case NM_VPN_SERVICE_STATE_STOPPED:
|
case NM_VPN_SERVICE_STATE_STOPPED:
|
||||||
priv->quit_timer = g_timeout_add_seconds_full (G_PRIORITY_DEFAULT,
|
priv->quit_timer = g_timeout_add_seconds (NM_VPN_PLUGIN_QUIT_TIMER,
|
||||||
NM_VPN_PLUGIN_QUIT_TIMER,
|
quit_timer_expired,
|
||||||
quit_timer_expired,
|
plugin);
|
||||||
plugin,
|
|
||||||
quit_timer_removed);
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
/* Clean up all timers we might have set up. */
|
/* Clean up all timers we might have set up. */
|
||||||
if (priv->connect_timer)
|
nm_clear_g_source (&priv->connect_timer);
|
||||||
g_source_remove (priv->connect_timer);
|
nm_clear_g_source (&priv->quit_timer);
|
||||||
|
nm_clear_g_source (&priv->fail_stop_id);
|
||||||
if (priv->quit_timer)
|
|
||||||
g_source_remove (priv->quit_timer);
|
|
||||||
|
|
||||||
if (priv->fail_stop_id) {
|
|
||||||
g_source_remove (priv->fail_stop_id);
|
|
||||||
priv->fail_stop_id = 0;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -40,6 +40,7 @@
|
|||||||
#include "nm-dbus-helpers.h"
|
#include "nm-dbus-helpers.h"
|
||||||
#include "nm-core-internal.h"
|
#include "nm-core-internal.h"
|
||||||
#include "nm-simple-connection.h"
|
#include "nm-simple-connection.h"
|
||||||
|
#include "nm-macros-internal.h"
|
||||||
|
|
||||||
#include "nmdbus-vpn-plugin.h"
|
#include "nmdbus-vpn-plugin.h"
|
||||||
|
|
||||||
@@ -230,6 +231,7 @@ connect_timer_expired (gpointer data)
|
|||||||
NMVpnPluginOld *plugin = NM_VPN_PLUGIN_OLD (data);
|
NMVpnPluginOld *plugin = NM_VPN_PLUGIN_OLD (data);
|
||||||
GError *err = NULL;
|
GError *err = NULL;
|
||||||
|
|
||||||
|
NM_VPN_PLUGIN_OLD_GET_PRIVATE (plugin)->connect_timer = 0;
|
||||||
g_message ("Connect timer expired, disconnecting.");
|
g_message ("Connect timer expired, disconnecting.");
|
||||||
nm_vpn_plugin_old_disconnect (plugin, &err);
|
nm_vpn_plugin_old_disconnect (plugin, &err);
|
||||||
if (err) {
|
if (err) {
|
||||||
@@ -237,26 +239,27 @@ connect_timer_expired (gpointer data)
|
|||||||
g_error_free (err);
|
g_error_free (err);
|
||||||
}
|
}
|
||||||
|
|
||||||
return FALSE;
|
return G_SOURCE_REMOVE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
quit_timer_expired (gpointer data)
|
quit_timer_expired (gpointer data)
|
||||||
{
|
{
|
||||||
NMVpnPluginOld *plugin = NM_VPN_PLUGIN_OLD (data);
|
NMVpnPluginOld *self = NM_VPN_PLUGIN_OLD (data);
|
||||||
|
|
||||||
nm_vpn_plugin_old_emit_quit (plugin);
|
NM_VPN_PLUGIN_OLD_GET_PRIVATE (self)->quit_timer = 0;
|
||||||
|
nm_vpn_plugin_old_emit_quit (self);
|
||||||
return FALSE;
|
return G_SOURCE_REMOVE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
fail_stop (gpointer data)
|
fail_stop (gpointer data)
|
||||||
{
|
{
|
||||||
NMVpnPluginOld *plugin = NM_VPN_PLUGIN_OLD (data);
|
NMVpnPluginOld *self = NM_VPN_PLUGIN_OLD (data);
|
||||||
|
|
||||||
nm_vpn_plugin_old_set_state (plugin, NM_VPN_SERVICE_STATE_STOPPED);
|
NM_VPN_PLUGIN_OLD_GET_PRIVATE (self)->fail_stop_id = 0;
|
||||||
return FALSE;
|
nm_vpn_plugin_old_set_state (self, NM_VPN_SERVICE_STATE_STOPPED);
|
||||||
|
return G_SOURCE_REMOVE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -264,8 +267,7 @@ schedule_fail_stop (NMVpnPluginOld *plugin)
|
|||||||
{
|
{
|
||||||
NMVpnPluginOldPrivate *priv = NM_VPN_PLUGIN_OLD_GET_PRIVATE (plugin);
|
NMVpnPluginOldPrivate *priv = NM_VPN_PLUGIN_OLD_GET_PRIVATE (plugin);
|
||||||
|
|
||||||
if (priv->fail_stop_id)
|
nm_clear_g_source (&priv->fail_stop_id);
|
||||||
g_source_remove (priv->fail_stop_id);
|
|
||||||
priv->fail_stop_id = g_idle_add (fail_stop, plugin);
|
priv->fail_stop_id = g_idle_add (fail_stop, plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -369,22 +371,12 @@ nm_vpn_plugin_old_set_ip6_config (NMVpnPluginOld *plugin,
|
|||||||
nm_vpn_plugin_old_set_state (plugin, NM_VPN_SERVICE_STATE_STARTED);
|
nm_vpn_plugin_old_set_state (plugin, NM_VPN_SERVICE_STATE_STARTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
connect_timer_removed (gpointer data)
|
|
||||||
{
|
|
||||||
NM_VPN_PLUGIN_OLD_GET_PRIVATE (data)->connect_timer = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
connect_timer_start (NMVpnPluginOld *plugin)
|
connect_timer_start (NMVpnPluginOld *plugin)
|
||||||
{
|
{
|
||||||
NMVpnPluginOldPrivate *priv = NM_VPN_PLUGIN_OLD_GET_PRIVATE (plugin);
|
NMVpnPluginOldPrivate *priv = NM_VPN_PLUGIN_OLD_GET_PRIVATE (plugin);
|
||||||
|
|
||||||
priv->connect_timer = g_timeout_add_seconds_full (G_PRIORITY_DEFAULT,
|
priv->connect_timer = g_timeout_add_seconds (60, connect_timer_expired, plugin);
|
||||||
60,
|
|
||||||
connect_timer_expired,
|
|
||||||
plugin,
|
|
||||||
connect_timer_removed);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -607,8 +599,7 @@ nm_vpn_plugin_old_secrets_required (NMVpnPluginOld *plugin,
|
|||||||
/* Cancel the connect timer since secrets might take a while. It'll
|
/* Cancel the connect timer since secrets might take a while. It'll
|
||||||
* get restarted when the secrets come back via NewSecrets().
|
* get restarted when the secrets come back via NewSecrets().
|
||||||
*/
|
*/
|
||||||
if (priv->connect_timer)
|
nm_clear_g_source (&priv->connect_timer);
|
||||||
g_source_remove (priv->connect_timer);
|
|
||||||
|
|
||||||
g_signal_emit (plugin, signals[SECRETS_REQUIRED], 0, message, hints);
|
g_signal_emit (plugin, signals[SECRETS_REQUIRED], 0, message, hints);
|
||||||
}
|
}
|
||||||
@@ -993,10 +984,9 @@ dispose (GObject *object)
|
|||||||
NMVpnServiceState state;
|
NMVpnServiceState state;
|
||||||
GError *err = NULL;
|
GError *err = NULL;
|
||||||
|
|
||||||
if (priv->fail_stop_id) {
|
nm_clear_g_source (&priv->fail_stop_id);
|
||||||
g_source_remove (priv->fail_stop_id);
|
nm_clear_g_source (&priv->quit_timer);
|
||||||
priv->fail_stop_id = 0;
|
nm_clear_g_source (&priv->connect_timer);
|
||||||
}
|
|
||||||
|
|
||||||
state = nm_vpn_plugin_old_get_state (plugin);
|
state = nm_vpn_plugin_old_get_state (plugin);
|
||||||
|
|
||||||
@@ -1029,12 +1019,6 @@ finalize (GObject *object)
|
|||||||
G_OBJECT_CLASS (nm_vpn_plugin_old_parent_class)->finalize (object);
|
G_OBJECT_CLASS (nm_vpn_plugin_old_parent_class)->finalize (object);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
quit_timer_removed (gpointer data)
|
|
||||||
{
|
|
||||||
NM_VPN_PLUGIN_OLD_GET_PRIVATE (data)->quit_timer = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
state_changed (NMVpnPluginOld *plugin, NMVpnServiceState state)
|
state_changed (NMVpnPluginOld *plugin, NMVpnServiceState state)
|
||||||
{
|
{
|
||||||
@@ -1042,34 +1026,19 @@ state_changed (NMVpnPluginOld *plugin, NMVpnServiceState state)
|
|||||||
|
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case NM_VPN_SERVICE_STATE_STARTING:
|
case NM_VPN_SERVICE_STATE_STARTING:
|
||||||
/* Remove the quit timer. */
|
nm_clear_g_source (&priv->quit_timer);
|
||||||
if (priv->quit_timer)
|
nm_clear_g_source (&priv->fail_stop_id);
|
||||||
g_source_remove (priv->quit_timer);
|
|
||||||
|
|
||||||
if (priv->fail_stop_id) {
|
|
||||||
g_source_remove (priv->fail_stop_id);
|
|
||||||
priv->fail_stop_id = 0;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case NM_VPN_SERVICE_STATE_STOPPED:
|
case NM_VPN_SERVICE_STATE_STOPPED:
|
||||||
priv->quit_timer = g_timeout_add_seconds_full (G_PRIORITY_DEFAULT,
|
priv->quit_timer = g_timeout_add_seconds (NM_VPN_PLUGIN_OLD_QUIT_TIMER,
|
||||||
NM_VPN_PLUGIN_OLD_QUIT_TIMER,
|
quit_timer_expired,
|
||||||
quit_timer_expired,
|
plugin);
|
||||||
plugin,
|
|
||||||
quit_timer_removed);
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
/* Clean up all timers we might have set up. */
|
/* Clean up all timers we might have set up. */
|
||||||
if (priv->connect_timer)
|
nm_clear_g_source (&priv->connect_timer);
|
||||||
g_source_remove (priv->connect_timer);
|
nm_clear_g_source (&priv->quit_timer);
|
||||||
|
nm_clear_g_source (&priv->fail_stop_id);
|
||||||
if (priv->quit_timer)
|
|
||||||
g_source_remove (priv->quit_timer);
|
|
||||||
|
|
||||||
if (priv->fail_stop_id) {
|
|
||||||
g_source_remove (priv->fail_stop_id);
|
|
||||||
priv->fail_stop_id = 0;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user