From 004924b0385a503520f26e499444f8c8c42616a6 Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Mon, 16 Dec 2013 12:30:13 +0100 Subject: [PATCH] broadband-modem-qmi: fix segfault when using AT-fallback mode for messaging The default broadband modem implementation doesn't have a method to disable unsolicited messages for SMS. --- src/mm-broadband-modem-qmi.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c index 9caec631..1efeb5a8 100644 --- a/src/mm-broadband-modem-qmi.c +++ b/src/mm-broadband-modem-qmi.c @@ -7447,7 +7447,7 @@ messaging_disable_unsolicited_events_finish (MMIfaceModemMessaging *_self, MMBroadbandModemQmi *self = MM_BROADBAND_MODEM_QMI (_self); /* Handle fallback */ - if (self->priv->messaging_fallback_at) { + if (self->priv->messaging_fallback_at && iface_modem_messaging_parent->disable_unsolicited_events_finish) { return iface_modem_messaging_parent->disable_unsolicited_events_finish (_self, res, error); } @@ -7556,6 +7556,21 @@ messaging_disable_unsolicited_events (MMIfaceModemMessaging *_self, /* Handle fallback */ if (self->priv->messaging_fallback_at) { + /* Generic implementation doesn't actually have a method to disable + * unsolicited messaging events */ + if (!iface_modem_messaging_parent->disable_unsolicited_events) { + GSimpleAsyncResult *result; + + result = g_simple_async_result_new (G_OBJECT (self), + callback, + user_data, + messaging_disable_unsolicited_events); + g_simple_async_result_set_op_res_gboolean (result, TRUE); + g_simple_async_result_complete_in_idle (result); + g_object_unref (result); + return; + } + return iface_modem_messaging_parent->disable_unsolicited_events (_self, callback, user_data); }