diff options
author | Mohamed Abbas <mabbas@linux.intel.com> | 2010-12-23 10:24:25 +0100 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2010-12-23 12:45:38 +0100 |
commit | 8a1be840cc0633d99606d2d3c73a1e55df9b9855 (patch) | |
tree | 9311ab388297782a14392bbca557387b9abb19d6 /src | |
parent | be65ac7ada64530b5d9049bf23a89dfbd644ebd1 (diff) | |
download | connman-8a1be840cc0633d99606d2d3c73a1e55df9b9855.tar.gz connman-8a1be840cc0633d99606d2d3c73a1e55df9b9855.tar.bz2 connman-8a1be840cc0633d99606d2d3c73a1e55df9b9855.zip |
service: Return connecting status while idle
The auto connection decision is then all let to service_auto_connect() as
it can now handle the connecting while idle decision.
Diffstat (limited to 'src')
-rw-r--r-- | src/network.c | 4 | ||||
-rw-r--r-- | src/service.c | 8 |
2 files changed, 10 insertions, 2 deletions
diff --git a/src/network.c b/src/network.c index 57d873ab..81f963ed 100644 --- a/src/network.c +++ b/src/network.c @@ -896,10 +896,10 @@ int __connman_network_connect(struct connman_network *network) if (network->device == NULL) return -ENODEV; - __connman_device_disconnect(network->device); - network->connecting = TRUE; + __connman_device_disconnect(network->device); + service = __connman_service_lookup_from_network(network); err = network->driver->connect(network); diff --git a/src/service.c b/src/service.c index c7aed258..f7fa76ce 100644 --- a/src/service.c +++ b/src/service.c @@ -308,6 +308,9 @@ static connman_bool_t is_connecting(struct connman_service *service) case CONNMAN_SERVICE_STATE_UNKNOWN: case CONNMAN_SERVICE_STATE_IDLE: case CONNMAN_SERVICE_STATE_FAILURE: + if (service->network != NULL) + return __connman_network_get_connecting( + service->network); case CONNMAN_SERVICE_STATE_DISCONNECT: case CONNMAN_SERVICE_STATE_READY: case CONNMAN_SERVICE_STATE_ONLINE: @@ -2798,6 +2801,11 @@ static gint service_compare(gconstpointer a, gconstpointer b, return -1; if (is_connected(service_b) == TRUE) return 1; + + if (is_connecting(service_a) == TRUE) + return -1; + if (is_connecting(service_b) == TRUE) + return 1; } if (service_a->order > service_b->order) |