Make sure to disconnect network on removal
authorMarcel Holtmann <marcel@holtmann.org>
Fri, 15 May 2009 06:48:44 +0000 (23:48 -0700)
committerMarcel Holtmann <marcel@holtmann.org>
Fri, 15 May 2009 06:48:44 +0000 (23:48 -0700)
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);