connman_bool_t hidden;
connman_bool_t ignore;
connman_bool_t autoconnect;
+ connman_bool_t userconnect;
GTimeVal modified;
unsigned int order;
char *name;
iter = g_sequence_iter_next(iter);
}
- if (service != NULL)
+ if (service != NULL) {
+ service->userconnect = FALSE;
__connman_service_connect(service);
+ }
}
static void reply_pending(struct connman_service *service, int error)
static gboolean connect_timeout(gpointer user_data)
{
struct connman_service *service = user_data;
- connman_bool_t auto_connect = FALSE;
+ connman_bool_t autoconnect = FALSE;
DBG("service %p", service);
dbus_message_unref(service->pending);
service->pending = NULL;
} else
- auto_connect = TRUE;
+ autoconnect = TRUE;
__connman_service_indicate_state(service,
CONNMAN_SERVICE_STATE_FAILURE);
- if (auto_connect == TRUE)
+ if (autoconnect == TRUE && service->userconnect == FALSE)
__connman_service_auto_connect();
return FALSE;
service->ignore = FALSE;
+ service->userconnect = TRUE;
+
service->pending = dbus_message_ref(msg);
err = __connman_service_connect(service);
service->ignore = FALSE;
+ service->userconnect = FALSE;
+
service->order = 0;
}
reply_pending(service, 0);
+ service->userconnect = FALSE;
+
g_get_current_time(&service->modified);
__connman_storage_save_service(service);
if (state == CONNMAN_SERVICE_STATE_FAILURE) {
reply_pending(service, EIO);
+ if (service->userconnect == FALSE)
+ __connman_service_auto_connect();
+
g_get_current_time(&service->modified);
__connman_storage_save_service(service);
} else
service->passphrase = g_strdup(passphrase);
}
+ service->userconnect = TRUE;
+
err = __connman_service_connect(service);
if (err < 0 && err != -EINPROGRESS)
goto failed;