diff options
Diffstat (limited to 'src/mm-sms-qmi.c')
-rw-r--r-- | src/mm-sms-qmi.c | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/src/mm-sms-qmi.c b/src/mm-sms-qmi.c index 2b167ed2..fbdaeb02 100644 --- a/src/mm-sms-qmi.c +++ b/src/mm-sms-qmi.c @@ -43,16 +43,30 @@ ensure_qmi_client (MMSmsQmi *self, { MMBaseModem *modem = NULL; QmiClient *client; + MMQmiPort *port; g_object_get (self, MM_SMS_MODEM, &modem, NULL); g_assert (MM_IS_BASE_MODEM (modem)); - client = mm_qmi_port_peek_client (mm_base_modem_peek_port_qmi (modem), + port = mm_base_modem_peek_port_qmi (modem); + g_object_unref (modem); + + if (!port) { + g_simple_async_report_error_in_idle (G_OBJECT (self), + callback, + user_data, + MM_CORE_ERROR, + MM_CORE_ERROR_FAILED, + "Couldn't peek QMI port"); + return FALSE; + } + + client = mm_qmi_port_peek_client (port, service, MM_QMI_PORT_FLAG_DEFAULT); - if (!client) + if (!client) { g_simple_async_report_error_in_idle (G_OBJECT (self), callback, user_data, @@ -60,11 +74,11 @@ ensure_qmi_client (MMSmsQmi *self, MM_CORE_ERROR_FAILED, "Couldn't peek client for service '%s'", qmi_service_get_string (service)); - else - *o_client = client; + return FALSE; + } - g_object_unref (modem); - return !!client; + *o_client = client; + return TRUE; } /*****************************************************************************/ |