summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohamed Abbas <mabbas@linux.intel.com>2010-12-23 10:24:25 +0100
committerSamuel Ortiz <sameo@linux.intel.com>2010-12-23 12:45:38 +0100
commit8a1be840cc0633d99606d2d3c73a1e55df9b9855 (patch)
tree9311ab388297782a14392bbca557387b9abb19d6
parentbe65ac7ada64530b5d9049bf23a89dfbd644ebd1 (diff)
downloadconnman-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.
-rw-r--r--src/network.c4
-rw-r--r--src/service.c8
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)