Fixes BMC#24432
---
 plugins/ofono.c |   19 ++++++++++++++++++-
 1 files changed, 18 insertions(+), 1 deletions(-)

diff --git a/plugins/ofono.c b/plugins/ofono.c
index 4ee44a9..ac186ca 100644
--- a/plugins/ofono.c
+++ b/plugins/ofono.c
@@ -262,7 +262,8 @@ static void set_disconnected(struct modem_data *modem)
 {
        DBG("%s", modem->path);
 
-       connman_network_set_connected(modem->network, FALSE);
+       if (modem->network != NULL)
+               connman_network_set_connected(modem->network, FALSE);
 }
 
 typedef void (*set_property_cb)(struct modem_data *data,
@@ -567,6 +568,20 @@ static int cdma_cm_shutdown(struct modem_data *modem)
        return err;
 }
 
+static void remove_network(struct modem_data *modem)
+{
+       DBG("%s", modem->path);
+
+       if (modem->network == NULL || modem->device == NULL)
+               return;
+
+       DBG("network %p", modem->network);
+
+       connman_device_remove_network(modem->device, modem->network);
+       connman_network_unref(modem->network);
+       modem->network = NULL;
+}
+
 static void modem_set_online_reply(struct modem_data *modem,
                                        connman_bool_t success)
 {
@@ -577,6 +592,8 @@ static void modem_set_online_reply(struct modem_data *modem,
                 * Don't handle do anything on success here. oFono will send
                 * the change via PropertyChanged singal.
                 */
+               if (modem->set_online == FALSE)
+                       remove_network(modem);
                return;
        }
 
-- 
1.7.2.2

_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman

Reply via email to