From a006761c7159594c6c3fade53eb2326393510a2a Mon Sep 17 00:00:00 2001 From: Thieu Le Date: Fri, 27 Sep 2013 16:47:25 -0700 Subject: [PATCH] novatel-lte: abort connect request if call failed Change-Id: Iae16ec87e12aaaf314b7e66b2f9c72a13251e352 --- plugins/novatel/mm-broadband-bearer-novatel-lte.c | 11 +++++++++++ 1 file changed, 11 insertions(+) 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);