Disconnect service on removal if still connected
[connman] / src / service.c
index 7809918..48bb49c 100644 (file)
@@ -379,13 +379,8 @@ 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);
@@ -417,18 +412,11 @@ static DBusMessage *remove_service(DBusConnection *conn,
        if (service->type == CONNMAN_SERVICE_TYPE_ETHERNET)
                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);
+       if (service->favorite == FALSE)
+               return __connman_error_not_supported(msg);
 
-               err = __connman_network_disconnect(service->network);
-               if (err < 0 && err != -EINPROGRESS)
-                       return __connman_error_failed(msg, -err);
-       }
+       if (service->network != NULL)
+               __connman_network_disconnect(service->network);
 
        connman_service_set_favorite(service, FALSE);
        __connman_storage_save_service(service);