---
 drivers/huaweimodem/radio-settings.c |   30 ++++++++++++++++++++----------
 1 files changed, 20 insertions(+), 10 deletions(-)

diff --git a/drivers/huaweimodem/radio-settings.c 
b/drivers/huaweimodem/radio-settings.c
index 68112fe..c850e33 100644
--- a/drivers/huaweimodem/radio-settings.c
+++ b/drivers/huaweimodem/radio-settings.c
@@ -182,11 +182,13 @@ static void huawei_query_rat_mode(struct 
ofono_radio_settings *rs,
        struct radio_settings_data *rsd = ofono_radio_settings_get_data(rs);
        struct cb_data *cbd = cb_data_new(cb, data);
 
-       if (g_at_chat_send(rsd->chat, "AT^SYSCFG?", syscfg_prefix,
-                               syscfg_query_mode_cb, cbd, g_free) == 0) {
-               CALLBACK_WITH_FAILURE(cb, -1, data);
-               g_free(cbd);
-       }
+       if (cbd && g_at_chat_send(rsd->chat, "AT^SYSCFG?", syscfg_prefix,
+                               syscfg_query_mode_cb, cbd, g_free) > 0)
+               return;
+
+       g_free(cbd);
+
+       CALLBACK_WITH_FAILURE(cb, -1, data);
 }
 
 static void syscfg_modify_mode_cb(gboolean ok, GAtResult *result,
@@ -210,6 +212,9 @@ static void huawei_set_rat_mode(struct ofono_radio_settings 
*rs,
        char buf[40];
        unsigned int value = 2, acq_order = 0;
 
+       if (cbd == NULL)
+               goto error;
+
        switch (mode) {
        case OFONO_RADIO_ACCESS_MODE_ANY:
                value = 2;
@@ -261,6 +266,9 @@ static void huawei_set_band(struct ofono_radio_settings *rs,
        char buf[40];
        unsigned int huawei_band;
 
+       if (cbd == NULL)
+               goto error;
+
        if (band_gsm == OFONO_RADIO_BAND_GSM_ANY
                        && band_umts == OFONO_RADIO_BAND_UMTS_ANY) {
                huawei_band = HUAWEI_BAND_ANY;
@@ -344,11 +352,13 @@ static void huawei_query_band(struct ofono_radio_settings 
*rs,
        struct radio_settings_data *rsd = ofono_radio_settings_get_data(rs);
        struct cb_data *cbd = cb_data_new(cb, data);
 
-       if (g_at_chat_send(rsd->chat, "AT^SYSCFG?", syscfg_prefix,
-                               syscfg_query_band_cb, cbd, g_free) == 0) {
-               CALLBACK_WITH_FAILURE(cb, -1, -1, data);
-               g_free(cbd);
-       }
+       if (cbd && g_at_chat_send(rsd->chat, "AT^SYSCFG?", syscfg_prefix,
+                               syscfg_query_band_cb, cbd, g_free) > 0)
+               return;
+
+       g_free(cbd);
+
+       CALLBACK_WITH_FAILURE(cb, -1, -1, data);
 }
 
 static void syscfg_support_cb(gboolean ok, GAtResult *result,
-- 
1.7.0.4

_______________________________________________
ofono mailing list
ofono@ofono.org
http://lists.ofono.org/listinfo/ofono

Reply via email to