libnm/libnm-glib: clean up VPN plugin timeouts
authorDan Williams <dcbw@redhat.com>
Tue, 30 Jun 2015 14:44:27 +0000 (09:44 -0500)
committerDan Williams <dcbw@redhat.com>
Thu, 16 Jul 2015 21:46:27 +0000 (16:46 -0500)
Use nm_clear_g_source().

libnm-glib/nm-vpn-plugin.c
libnm/nm-vpn-plugin-old.c

index 7848c13..2fad706 100644 (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);
-
-       nm_vpn_plugin_emit_quit (plugin);
+       NMVPNPlugin *self = NM_VPN_PLUGIN (data);
 
-       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;
        }
 }
index d5dd066..72bf4d0 100644 (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);
-
-       nm_vpn_plugin_old_emit_quit (plugin);
+       NMVpnPluginOld *self = NM_VPN_PLUGIN_OLD (data);
 
-       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;
        }
 }