This was previously handled by the provider notifier code, but with the
VPNs being moved to the service list top, it has to be handled from the
service layer directly.
}
-static void provider_default_changed(struct connman_service *service)
-{
- DBG("service %p", service);
-
- if (service == NULL) {
- /* When no services are active, then disconnect all VPNs */
- provider_offline_mode(TRUE);
- return;
- }
-}
-
static struct connman_notifier provider_notifier = {
.name = "provider",
- .default_changed = provider_default_changed,
.offline_mode = provider_offline_mode,
};
if (service->state == CONNMAN_SERVICE_STATE_ONLINE)
default_changed();
+ if (service->state == CONNMAN_SERVICE_STATE_DISCONNECT) {
+ struct connman_service *def_service = get_default();
+
+ if (__connman_notifier_count_connected() == 0 &&
+ def_service != NULL &&
+ def_service->provider != NULL)
+ __connman_provider_disconnect(def_service->provider);
+ }
+
if (service->state == CONNMAN_SERVICE_STATE_IDLE ||
service->state == CONNMAN_SERVICE_STATE_FAILURE)
__connman_element_request_scan(CONNMAN_ELEMENT_TYPE_UNKNOWN);