service->timeout = 0;
+ if (service->network != NULL)
+ __connman_network_disconnect(service->network);
+
if (service->pending != NULL) {
DBusMessage *reply;
if (service->type == CONNMAN_SERVICE_TYPE_ETHERNET)
return __connman_error_not_supported(msg);
+ if (service->favorite == FALSE)
+ return __connman_error_not_supported(msg);
+
if (service->network != NULL) {
- int err;
+ struct connman_device *device;
- err = __connman_network_disconnect(service->network);
- if (err < 0 && err != -EINPROGRESS)
- return __connman_error_failed(msg, -err);
+ device = connman_network_get_device(service->network);
+ if (device != NULL)
+ __connman_device_disconnect(device);
+
+ __connman_network_disconnect(service->network);
}
connman_service_set_favorite(service, FALSE);