summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2009-05-14 23:48:44 -0700
committerMarcel Holtmann <marcel@holtmann.org>2009-05-14 23:48:44 -0700
commit10bdc91dc606042ebb323f3017e5778274609275 (patch)
tree48fbd8a3b81578edb7f942c2b02331902d9f7b55
parent96b695f77aa32ed7272264889e41bb0a6830e101 (diff)
downloadconnman-10bdc91dc606042ebb323f3017e5778274609275.tar.gz
connman-10bdc91dc606042ebb323f3017e5778274609275.tar.bz2
connman-10bdc91dc606042ebb323f3017e5778274609275.zip
Make sure to disconnect network on removal
-rw-r--r--src/service.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/service.c b/src/service.c
index 88b131a2..7809918f 100644
--- a/src/service.c
+++ b/src/service.c
@@ -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);