From 4d1cfc2e54c0dcafa4c31d3104f1796e8c017a94 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Thu, 16 Jul 2009 03:05:59 +0200 Subject: [PATCH] Track connection attempts and report error if it fails --- src/network.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/network.c b/src/network.c index afce285..e184393 100644 --- a/src/network.c +++ b/src/network.c @@ -34,7 +34,6 @@ struct connman_network { struct connman_element element; enum connman_network_type type; enum connman_network_protocol protocol; - connman_bool_t associating; connman_bool_t secondary; connman_bool_t available; connman_bool_t connected; @@ -51,6 +50,8 @@ struct connman_network { void *driver_data; connman_bool_t registered; + connman_bool_t connecting; + connman_bool_t associating; struct connman_device *device; @@ -760,6 +761,8 @@ static gboolean set_connected(gpointer user_data) CONNMAN_SERVICE_STATE_IDLE); } + network->connecting = FALSE; + return FALSE; } @@ -779,6 +782,12 @@ int connman_network_set_connected(struct connman_network *network, DBG("network %p connected %d", network, connected); + if (connected == FALSE && network->connecting == TRUE) { + connman_element_set_error(&network->element, + CONNMAN_ELEMENT_ERROR_CONNECT_FAILED); + network->connecting = FALSE; + } + if (network->connected == connected) return -EALREADY; @@ -847,6 +856,8 @@ int __connman_network_connect(struct connman_network *network) __connman_device_disconnect(network->device); + network->connecting = TRUE; + err = network->driver->connect(network); if (err == 0) { network->connected = TRUE; @@ -877,6 +888,8 @@ int __connman_network_disconnect(struct connman_network *network) if (network->driver->disconnect == NULL) return -ENOSYS; + network->connecting = FALSE; + err = network->driver->disconnect(network); if (err == 0) { network->connected = FALSE; -- 2.7.4