#include "connman.h"
+#define MAX_CONNECT_RETRIES 2
+
static DBusConnection *connection = NULL;
static GSequence *service_list = NULL;
connman_bool_t userconnect;
GTimeVal modified;
unsigned int order;
+ unsigned int failcounter;
char *name;
char *passphrase;
char *profile;
service->ignore = FALSE;
service->userconnect = TRUE;
+ service->failcounter = 0;
service->pending = dbus_message_ref(msg);
DBG("service %p", service);
+ reply_pending(service, ECONNABORTED);
+
service->ignore = TRUE;
err = __connman_service_disconnect(service);
iter = g_hash_table_lookup(service_hash, service->identifier);
if (iter != NULL) {
+ reply_pending(service, ECONNABORTED);
+
__connman_service_disconnect(service);
+
g_sequence_remove(iter);
} else
service_free(service);
service->state = CONNMAN_SERVICE_STATE_DISCONNECT;
state_changed(service);
+ reply_pending(service, ECONNABORTED);
+
__connman_service_disconnect(service);
}
reply_pending(service, 0);
service->userconnect = FALSE;
+ service->failcounter = 0;
g_get_current_time(&service->modified);
__connman_storage_save_service(service);
}
if (state == CONNMAN_SERVICE_STATE_FAILURE) {
+ if (service->failcounter++ < MAX_CONNECT_RETRIES) {
+ connman_warn("Connecting again (try %d)",
+ service->failcounter);
+ __connman_service_disconnect(service);
+ __connman_service_connect(service);
+ return 0;
+ }
+
reply_pending(service, EIO);
if (service->userconnect == FALSE)
DBG("service %p", service);
- reply_pending(service, ECONNABORTED);
-
if (service->network != NULL) {
err = __connman_network_disconnect(service->network);
} else if (service->device != NULL) {