diff options
author | Maciej S. Szmigiero <maciej.szmigiero@oracle.com> | 2023-01-06 00:12:12 +0100 |
---|---|---|
committer | Maciej S. Szmigiero <maciej.szmigiero@oracle.com> | 2023-01-07 22:00:20 +0100 |
commit | b281954817b0dbf7084221925422c2e9a8f162c6 (patch) | |
tree | 71249709e5d3f17e589620765e56d8271cb03190 /src | |
parent | fb4ce2462bd7e7a5c8fb959903bb98567ec177fa (diff) |
web-source: Cancel old g_network_monitor calls before starting new ones
This way there won't be multiple outstanding reachability checks if
network configuration changes quickly multiple times.
Diffstat (limited to 'src')
-rw-r--r-- | src/gclue-web-source.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/gclue-web-source.c b/src/gclue-web-source.c index 881aa18..e3e9a37 100644 --- a/src/gclue-web-source.c +++ b/src/gclue-web-source.c @@ -286,6 +286,17 @@ submit_url_checked_cb (GObject *source_object, } static void +cancellable_cancel_recreate (GClueWebSource *source) +{ + GClueWebSourcePrivate *priv = source->priv; + + g_cancellable_cancel (priv->cancellable); + + g_clear_object (&priv->cancellable); + priv->cancellable = g_cancellable_new (); +} + +static void on_network_changed (GNetworkMonitor *unused_monitor G_GNUC_UNUSED, gboolean available G_GNUC_UNUSED, gpointer user_data) @@ -295,6 +306,8 @@ on_network_changed (GNetworkMonitor *unused_monitor G_GNUC_UNUSED, g_autoptr(GSocketConnectable) submit_addr = NULL; g_autoptr(GSocketConnectable) locate_addr = NULL; + cancellable_cancel_recreate (web); + if (web->priv->submit_url) { submit_addr = g_network_address_parse_uri (web->priv->submit_url, 80, NULL); |