Make sure to disconnect network on removal
[connman] / src / service.c
index 88b131a..7809918 100644 (file)
@@ -379,8 +379,13 @@ static DBusMessage *disconnect_service(DBusConnection *conn,
        }
 
        if (service->network != NULL) {
+               struct connman_device *device;
                int err;
 
+               device = connman_network_get_device(service->network);
+               if (device != NULL)
+                       __connman_device_disconnect(device);
+
                err = __connman_network_disconnect(service->network);
                if (err < 0 && err != -EINPROGRESS)
                        return __connman_error_failed(msg, -err);
@@ -413,8 +418,13 @@ static DBusMessage *remove_service(DBusConnection *conn,
                return __connman_error_not_supported(msg);
 
        if (service->network != NULL) {
+               struct connman_device *device;
                int err;
 
+               device = connman_network_get_device(service->network);
+               if (device != NULL)
+                       __connman_device_disconnect(device);
+
                err = __connman_network_disconnect(service->network);
                if (err < 0 && err != -EINPROGRESS)
                        return __connman_error_failed(msg, -err);