summaryrefslogtreecommitdiff
path: root/src/mm-base-bearer.c
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2016-08-15 13:24:45 +0200
committerAleksander Morgado <aleksander@aleksander.es>2016-10-12 13:24:09 +0200
commit1775544dbc737c40aae31516f8ecc4d1822aac22 (patch)
tree894a949d27159b4dbc7af295bc206ae1671cbf08 /src/mm-base-bearer.c
parent79aebb9ba4e074f2378d0580d2bd00269b4b026c (diff)
base-bearer: allow deactivating stats loading if device says unsupported
Diffstat (limited to 'src/mm-base-bearer.c')
-rw-r--r--src/mm-base-bearer.c26
1 files changed, 20 insertions, 6 deletions
diff --git a/src/mm-base-bearer.c b/src/mm-base-bearer.c
index 14194b9d..0cca8534 100644
--- a/src/mm-base-bearer.c
+++ b/src/mm-base-bearer.c
@@ -114,6 +114,8 @@ struct _MMBaseBearerPrivate {
guint stats_update_id;
/* Timer to measure the duration of the connection */
GTimer *duration_timer;
+ /* Flag to specify whether reloading stats is supported or not */
+ gboolean reload_stats_unsupported;
};
/*****************************************************************************/
@@ -234,14 +236,25 @@ static void
reload_stats_ready (MMBaseBearer *self,
GAsyncResult *res)
{
- GError *error = NULL;
- guint64 rx_bytes = 0;
- guint64 tx_bytes = 0;
+ GError *error = NULL;
+ guint64 rx_bytes = 0;
+ guint64 tx_bytes = 0;
if (!MM_BASE_BEARER_GET_CLASS (self)->reload_stats_finish (self, &rx_bytes, &tx_bytes, res, &error)) {
- mm_warn ("Reloading stats failed: %s", error->message);
+ /* If reloading stats fails, warn about it and don't update anything */
+ if (!g_error_matches (error, MM_CORE_ERROR, MM_CORE_ERROR_UNSUPPORTED)) {
+ mm_warn ("Reloading stats failed: %s", error->message);
+ g_error_free (error);
+ return;
+ }
+
+ /* If we're being told that reloading stats is unsupported, just ignore
+ * the error and update oly the duration timer. */
+ mm_dbg ("Reloading stats is unsupported by the device");
+ self->priv->reload_stats_unsupported = TRUE;
+ rx_bytes = 0;
+ tx_bytes = 0;
g_error_free (error);
- return;
}
/* We only update stats if they were retrieved properly */
@@ -255,7 +268,8 @@ static gboolean
stats_update_cb (MMBaseBearer *self)
{
/* If the implementation knows how to update stat values, run it */
- if (MM_BASE_BEARER_GET_CLASS (self)->reload_stats &&
+ if (!self->priv->reload_stats_unsupported &&
+ MM_BASE_BEARER_GET_CLASS (self)->reload_stats &&
MM_BASE_BEARER_GET_CLASS (self)->reload_stats_finish) {
MM_BASE_BEARER_GET_CLASS (self)->reload_stats (
self,