From: Marcel Holtmann Date: Thu, 16 Jul 2009 01:05:59 +0000 (+0200) Subject: Track connection attempts and report error if it fails X-Git-Tag: 0.24~33 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4d1cfc2e54c0dcafa4c31d3104f1796e8c017a94;p=platform%2Fupstream%2Fconnman.git Track connection attempts and report error if it fails --- 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;