aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThieu Le <thieule@chromium.org>2013-09-27 16:47:25 -0700
committerDan Williams <dcbw@redhat.com>2013-10-01 12:16:35 -0500
commita006761c7159594c6c3fade53eb2326393510a2a (patch)
tree63a61ec4c96c4db1cd9306a2148e4a58754ae1ee
parentb5ef861d12c7533d89a18454b03e8e3301164bea (diff)
novatel-lte: abort connect request if call failed
Change-Id: Iae16ec87e12aaaf314b7e66b2f9c72a13251e352
-rw-r--r--plugins/novatel/mm-broadband-bearer-novatel-lte.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/plugins/novatel/mm-broadband-bearer-novatel-lte.c b/plugins/novatel/mm-broadband-bearer-novatel-lte.c
index 22256562..ed6b027e 100644
--- a/plugins/novatel/mm-broadband-bearer-novatel-lte.c
+++ b/plugins/novatel/mm-broadband-bearer-novatel-lte.c
@@ -114,6 +114,14 @@ is_qmistatus_disconnected (const gchar *str)
return g_strrstr (str, "QMI State: DISCONNECTED") || g_strrstr (str, "QMI State: QMI_WDS_PKT_DATA_DISCONNECTED");
}
+static gboolean
+is_qmistatus_call_failed (const gchar *str)
+{
+ str = mm_strip_tag (str, QMISTATUS_TAG);
+
+ return (g_strrstr (str, "QMI_RESULT_FAILURE:QMI_ERR_CALL_FAILED") != NULL);
+}
+
static void
poll_connection_ready (MMBaseModem *modem,
GAsyncResult *res,
@@ -193,6 +201,9 @@ connect_3gpp_qmistatus_ready (MMBaseModem *modem,
g_object_unref (config);
detailed_connect_context_complete_and_free (ctx);
return;
+ } else if (is_qmistatus_call_failed (result)) {
+ /* Don't retry if the call failed */
+ ctx->retries = 0;
}
mm_dbg ("Error: '%s'", result);