From: Pekka Pessi <pekka.pe...@nokia.com>

Clears the error so that the corresponding service can retry
autoconnecting.
---
 src/connman.h |    1 +
 src/network.c |   17 +++++++++++++++++
 src/service.c |   17 +++++++++++++++++
 3 files changed, 35 insertions(+), 0 deletions(-)

diff --git a/src/connman.h b/src/connman.h
index 37946f6..8ba3558 100644
--- a/src/connman.h
+++ b/src/connman.h
@@ -485,6 +485,7 @@ int __connman_service_indicate_state(struct connman_service 
*service,
                                        enum connman_service_state state);
 int __connman_service_indicate_error(struct connman_service *service,
                                        enum connman_service_error error);
+int __connman_service_clear_error(struct connman_service *service);
 int __connman_service_indicate_default(struct connman_service *service);
 int __connman_service_request_login(struct connman_service *service);
 
diff --git a/src/network.c b/src/network.c
index 292b292..b6fffc6 100644
--- a/src/network.c
+++ b/src/network.c
@@ -587,6 +587,23 @@ void connman_network_set_error(struct connman_network 
*network,
        }
 }
 
+void connman_network_clear_error(struct connman_network *network)
+{
+       struct connman_service *service;
+
+       DBG("network %p", (void *) network);
+
+       if (network == NULL)
+               return;
+
+       if (network->connecting || network->associating)
+               return;
+
+       service = __connman_service_lookup_from_network(network);
+       __connman_service_clear_error(service);
+}
+
+
 static void set_configuration(struct connman_network *network)
 {
        struct connman_service *service;
diff --git a/src/service.c b/src/service.c
index 0ea1223..2583ecf 100644
--- a/src/service.c
+++ b/src/service.c
@@ -3206,6 +3206,23 @@ int __connman_service_indicate_error(struct 
connman_service *service,
                                        CONNMAN_SERVICE_STATE_FAILURE);
 }
 
+int __connman_service_clear_error(struct connman_service *service)
+{
+       DBG("service %p", (void *)service);
+
+       if (service == NULL)
+               return -EINVAL;
+
+       if (service->state != CONNMAN_SERVICE_STATE_FAILURE)
+               return -EINVAL;
+
+       service->state = CONNMAN_SERVICE_STATE_UNKNOWN;
+       service->error = 0;
+
+       return __connman_service_indicate_state(service,
+                                       CONNMAN_SERVICE_STATE_IDLE);
+}
+
 int __connman_service_indicate_default(struct connman_service *service)
 {
        DBG("service %p", service);
-- 
1.7.1

_______________________________________________
connman mailing list
connman@connman.net
http://lists.connman.net/listinfo/connman

Reply via email to