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;
void *driver_data;
connman_bool_t registered;
+ connman_bool_t connecting;
+ connman_bool_t associating;
struct connman_device *device;
CONNMAN_SERVICE_STATE_IDLE);
}
+ network->connecting = FALSE;
+
return FALSE;
}
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;
__connman_device_disconnect(network->device);
+ network->connecting = TRUE;
+
err = network->driver->connect(network);
if (err == 0) {
network->connected = TRUE;
if (network->driver->disconnect == NULL)
return -ENOSYS;
+ network->connecting = FALSE;
+
err = network->driver->disconnect(network);
if (err == 0) {
network->connected = FALSE;