libnm/libnm-glib: clean up VPN plugin timeouts

Use nm_clear_g_source().
This commit is contained in:
Dan Williams 2015-06-30 09:44:27 -05:00
parent eab32a5252
commit aa7ab4b056
2 changed files with 50 additions and 112 deletions

View file

@ -28,6 +28,7 @@
#include "nm-utils.h"
#include "nm-connection.h"
#include "nm-dbus-glib-types.h"
#include "nm-macros-internal.h"
static gboolean impl_vpn_plugin_connect (NMVPNPlugin *plugin,
GHashTable *connection,
@ -257,6 +258,7 @@ connect_timer_expired (gpointer data)
NMVPNPlugin *plugin = NM_VPN_PLUGIN (data);
GError *err = NULL;
NM_VPN_PLUGIN_GET_PRIVATE (plugin)->connect_timer = 0;
g_message ("Connect timer expired, disconnecting.");
nm_vpn_plugin_disconnect (plugin, &err);
if (err) {
@ -264,26 +266,27 @@ connect_timer_expired (gpointer data)
g_error_free (err);
}
return FALSE;
return G_SOURCE_REMOVE;
}
static gboolean
quit_timer_expired (gpointer data)
{
NMVPNPlugin *plugin = NM_VPN_PLUGIN (data);
NMVPNPlugin *self = NM_VPN_PLUGIN (data);
nm_vpn_plugin_emit_quit (plugin);
return FALSE;
NM_VPN_PLUGIN_GET_PRIVATE (self)->quit_timer = 0;
nm_vpn_plugin_emit_quit (self);
return G_SOURCE_REMOVE;
}
static gboolean
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);
return FALSE;
NM_VPN_PLUGIN_GET_PRIVATE (self)->fail_stop_id = 0;
nm_vpn_plugin_set_state (self, NM_VPN_SERVICE_STATE_STOPPED);
return G_SOURCE_REMOVE;
}
static void
@ -291,8 +294,7 @@ schedule_fail_stop (NMVPNPlugin *plugin)
{
NMVPNPluginPrivate *priv = NM_VPN_PLUGIN_GET_PRIVATE (plugin);
if (priv->fail_stop_id)
g_source_remove (priv->fail_stop_id);
nm_clear_g_source (&priv->fail_stop_id);
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);
}
static void
connect_timer_removed (gpointer data)
{
NM_VPN_PLUGIN_GET_PRIVATE (data)->connect_timer = 0;
}
static void
connect_timer_start (NMVPNPlugin *plugin)
{
NMVPNPluginPrivate *priv = NM_VPN_PLUGIN_GET_PRIVATE (plugin);
priv->connect_timer = g_timeout_add_seconds_full (G_PRIORITY_DEFAULT,
60,
connect_timer_expired,
plugin,
connect_timer_removed);
priv->connect_timer = g_timeout_add_seconds (60, connect_timer_expired, plugin);
}
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
* get restarted when the secrets come back via NewSecrets().
*/
if (priv->connect_timer)
g_source_remove (priv->connect_timer);
nm_clear_g_source (&priv->connect_timer);
g_signal_emit (plugin, signals[SECRETS_REQUIRED], 0, message, hints);
}
@ -848,10 +839,9 @@ dispose (GObject *object)
NMVPNServiceState state;
GError *err = NULL;
if (priv->fail_stop_id) {
g_source_remove (priv->fail_stop_id);
priv->fail_stop_id = 0;
}
nm_clear_g_source (&priv->fail_stop_id);
nm_clear_g_source (&priv->quit_timer);
nm_clear_g_source (&priv->connect_timer);
state = nm_vpn_plugin_get_state (plugin);
@ -888,12 +878,6 @@ finalize (GObject *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
state_changed (NMVPNPlugin *plugin, NMVPNServiceState state)
{
@ -901,34 +885,19 @@ state_changed (NMVPNPlugin *plugin, NMVPNServiceState state)
switch (state) {
case NM_VPN_SERVICE_STATE_STARTING:
/* Remove the quit timer. */
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;
}
nm_clear_g_source (&priv->quit_timer);
nm_clear_g_source (&priv->fail_stop_id);
break;
case NM_VPN_SERVICE_STATE_STOPPED:
priv->quit_timer = g_timeout_add_seconds_full (G_PRIORITY_DEFAULT,
NM_VPN_PLUGIN_QUIT_TIMER,
quit_timer_expired,
plugin,
quit_timer_removed);
priv->quit_timer = g_timeout_add_seconds (NM_VPN_PLUGIN_QUIT_TIMER,
quit_timer_expired,
plugin);
break;
default:
/* Clean up all timers we might have set up. */
if (priv->connect_timer)
g_source_remove (priv->connect_timer);
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;
}
nm_clear_g_source (&priv->connect_timer);
nm_clear_g_source (&priv->quit_timer);
nm_clear_g_source (&priv->fail_stop_id);
break;
}
}

View file

@ -40,6 +40,7 @@
#include "nm-dbus-helpers.h"
#include "nm-core-internal.h"
#include "nm-simple-connection.h"
#include "nm-macros-internal.h"
#include "nmdbus-vpn-plugin.h"
@ -230,6 +231,7 @@ connect_timer_expired (gpointer data)
NMVpnPluginOld *plugin = NM_VPN_PLUGIN_OLD (data);
GError *err = NULL;
NM_VPN_PLUGIN_OLD_GET_PRIVATE (plugin)->connect_timer = 0;
g_message ("Connect timer expired, disconnecting.");
nm_vpn_plugin_old_disconnect (plugin, &err);
if (err) {
@ -237,26 +239,27 @@ connect_timer_expired (gpointer data)
g_error_free (err);
}
return FALSE;
return G_SOURCE_REMOVE;
}
static gboolean
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);
return FALSE;
NM_VPN_PLUGIN_OLD_GET_PRIVATE (self)->quit_timer = 0;
nm_vpn_plugin_old_emit_quit (self);
return G_SOURCE_REMOVE;
}
static gboolean
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);
return FALSE;
NM_VPN_PLUGIN_OLD_GET_PRIVATE (self)->fail_stop_id = 0;
nm_vpn_plugin_old_set_state (self, NM_VPN_SERVICE_STATE_STOPPED);
return G_SOURCE_REMOVE;
}
static void
@ -264,8 +267,7 @@ schedule_fail_stop (NMVpnPluginOld *plugin)
{
NMVpnPluginOldPrivate *priv = NM_VPN_PLUGIN_OLD_GET_PRIVATE (plugin);
if (priv->fail_stop_id)
g_source_remove (priv->fail_stop_id);
nm_clear_g_source (&priv->fail_stop_id);
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);
}
static void
connect_timer_removed (gpointer data)
{
NM_VPN_PLUGIN_OLD_GET_PRIVATE (data)->connect_timer = 0;
}
static void
connect_timer_start (NMVpnPluginOld *plugin)
{
NMVpnPluginOldPrivate *priv = NM_VPN_PLUGIN_OLD_GET_PRIVATE (plugin);
priv->connect_timer = g_timeout_add_seconds_full (G_PRIORITY_DEFAULT,
60,
connect_timer_expired,
plugin,
connect_timer_removed);
priv->connect_timer = g_timeout_add_seconds (60, connect_timer_expired, plugin);
}
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
* get restarted when the secrets come back via NewSecrets().
*/
if (priv->connect_timer)
g_source_remove (priv->connect_timer);
nm_clear_g_source (&priv->connect_timer);
g_signal_emit (plugin, signals[SECRETS_REQUIRED], 0, message, hints);
}
@ -993,10 +984,9 @@ dispose (GObject *object)
NMVpnServiceState state;
GError *err = NULL;
if (priv->fail_stop_id) {
g_source_remove (priv->fail_stop_id);
priv->fail_stop_id = 0;
}
nm_clear_g_source (&priv->fail_stop_id);
nm_clear_g_source (&priv->quit_timer);
nm_clear_g_source (&priv->connect_timer);
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);
}
static void
quit_timer_removed (gpointer data)
{
NM_VPN_PLUGIN_OLD_GET_PRIVATE (data)->quit_timer = 0;
}
static void
state_changed (NMVpnPluginOld *plugin, NMVpnServiceState state)
{
@ -1042,34 +1026,19 @@ state_changed (NMVpnPluginOld *plugin, NMVpnServiceState state)
switch (state) {
case NM_VPN_SERVICE_STATE_STARTING:
/* Remove the quit timer. */
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;
}
nm_clear_g_source (&priv->quit_timer);
nm_clear_g_source (&priv->fail_stop_id);
break;
case NM_VPN_SERVICE_STATE_STOPPED:
priv->quit_timer = g_timeout_add_seconds_full (G_PRIORITY_DEFAULT,
NM_VPN_PLUGIN_OLD_QUIT_TIMER,
quit_timer_expired,
plugin,
quit_timer_removed);
priv->quit_timer = g_timeout_add_seconds (NM_VPN_PLUGIN_OLD_QUIT_TIMER,
quit_timer_expired,
plugin);
break;
default:
/* Clean up all timers we might have set up. */
if (priv->connect_timer)
g_source_remove (priv->connect_timer);
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;
}
nm_clear_g_source (&priv->connect_timer);
nm_clear_g_source (&priv->quit_timer);
nm_clear_g_source (&priv->fail_stop_id);
break;
}
}