diff options
author | Maciej S. Szmigiero <maciej.szmigiero@oracle.com> | 2023-01-06 00:35:30 +0100 |
---|---|---|
committer | Maciej S. Szmigiero <maciej.szmigiero@oracle.com> | 2023-01-07 22:00:20 +0100 |
commit | e123c1459dd46dd9f5535291a2ed7383222d81d5 (patch) | |
tree | bd51439b5d6440ebebe0cf0e923d18a11314f1d6 | |
parent | b281954817b0dbf7084221925422c2e9a8f162c6 (diff) | |
download | geoclue-e123c1459dd46dd9f5535291a2ed7383222d81d5.tar.gz |
web-source: Locate / submit URLs are reachable if Internet is available
Let's regard locate / submit URLs as reachable if Internet is available,
otherwise temporary DNS resolving problems can cause these to be regarded
as unreachable until a new network change causes new probes to be sent.
-rw-r--r-- | src/gclue-web-source.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/gclue-web-source.c b/src/gclue-web-source.c index e3e9a37..4e1368d 100644 --- a/src/gclue-web-source.c +++ b/src/gclue-web-source.c @@ -227,6 +227,15 @@ refresh_accuracy_level (GClueWebSource *web) } } +static gboolean +get_internet_available (void) +{ + GNetworkMonitor *monitor = g_network_monitor_get_default (); + + return g_network_monitor_get_connectivity (monitor) == + G_NETWORK_CONNECTIVITY_FULL; +} + static void locate_url_checked_cb (GObject *source_object, GAsyncResult *result, @@ -243,6 +252,11 @@ locate_url_checked_cb (GObject *source_object, return; /* WebSource instance is finalized */ } + if (!reachable && get_internet_available ()) { + g_debug ("Locate URL not reachable, but Internet is available, overriding"); + reachable = TRUE; + } + web = GCLUE_WEB_SOURCE (user_data); last_reachable = web->priv->locate_url_reachable; web->priv->locate_url_reachable = reachable; @@ -274,6 +288,11 @@ submit_url_checked_cb (GObject *source_object, return; /* WebSource instance is finalized */ } + if (!reachable && get_internet_available ()) { + g_debug ("Submit URL not reachable, but Internet is available, overriding"); + reachable = TRUE; + } + web = GCLUE_WEB_SOURCE (user_data); last_reachable = web->priv->submit_url_reachable; web->priv->submit_url_reachable = reachable; |