Hi,
I was looking at service_indicate_state(). Here is the snippet from it if
the state is DISCONNECTED
} else if (new_state == CONNMAN_SERVICE_STATE_DISCONNECT) {
def_service = get_default();
if (__connman_notifier_count_connected() == 0 &&
def_service != NULL &&
def_service->provider != NULL)
__connman_provider_disconnect(def_service->provider);
default_changed();
__connman_wispr_stop(service);
__connman_wpad_stop(service);
update_nameservers(service);
dns_changed(service);
domain_changed(service);
__connman_timeserver_stop();
__connman_notifier_disconnect(service->type);
/*
* Previous services which are connected and which states
* are set to online should reset relevantly ipconfig_state
* to ready so wispr/portal will be rerun on those
*/
downgrade_connected_services();
}
Here, __connman_notifier_count_connected() is called before
__connman_notifier_disconnect(service->type). The count is checked before
it is decremented. Also if the connected count for the current service type
is 0, why does it disconnect the default service's provider?
e.g : if default service is ethernet, and connected count for wifi goes to
0, it will disconnect the provider for ethernet.
This is based of pure code reading, i have not really tested this. but it
seems like a bug to me.
Cheers,
Alok.
_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman