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