This makes the code more readable in service_indicate_state().
---
 src/service.c | 43 +++++++++++++++++++++++++++++++------------
 1 file changed, 31 insertions(+), 12 deletions(-)

diff --git a/src/service.c b/src/service.c
index f35f436..d65443c 100644
--- a/src/service.c
+++ b/src/service.c
@@ -5274,6 +5274,7 @@ static int service_indicate_state(struct connman_service 
*service)
 {
        enum connman_service_state old_state, new_state;
        struct connman_service *def_service;
+       enum connman_ipconfig_method method;
        int result;
 
        if (!service)
@@ -5307,13 +5308,22 @@ static int service_indicate_state(struct 
connman_service *service)
        service->state = new_state;
        state_changed(service);
 
-       if (new_state == CONNMAN_SERVICE_STATE_IDLE &&
-                       old_state != CONNMAN_SERVICE_STATE_DISCONNECT) {
+       switch(new_state) {
+       case CONNMAN_SERVICE_STATE_UNKNOWN:
 
-               __connman_service_disconnect(service);
-       }
+               break;
+
+       case CONNMAN_SERVICE_STATE_IDLE:
+               if (old_state != CONNMAN_SERVICE_STATE_DISCONNECT)
+                       __connman_service_disconnect(service);
+
+               break;
+
+       case CONNMAN_SERVICE_STATE_ASSOCIATION:
+
+               break;
 
-       if (new_state == CONNMAN_SERVICE_STATE_CONFIGURATION) {
+       case CONNMAN_SERVICE_STATE_CONFIGURATION:
                if (!service->new_service &&
                                __connman_stats_service_register(service) == 0) 
{
                        /*
@@ -5325,11 +5335,10 @@ static int service_indicate_state(struct 
connman_service *service)
                        __connman_stats_get(service, true,
                                                &service->stats_roaming.data);
                }
-       }
 
-       if (new_state == CONNMAN_SERVICE_STATE_READY) {
-               enum connman_ipconfig_method method;
+               break;
 
+       case CONNMAN_SERVICE_STATE_READY:
                if (service->new_service &&
                                __connman_stats_service_register(service) == 0) 
{
                        /*
@@ -5389,7 +5398,13 @@ static int service_indicate_state(struct connman_service 
*service)
                else if (service->type != CONNMAN_SERVICE_TYPE_VPN)
                        vpn_auto_connect();
 
-       } else if (new_state == CONNMAN_SERVICE_STATE_DISCONNECT) {
+               break;
+
+       case CONNMAN_SERVICE_STATE_ONLINE:
+
+               break;
+
+       case CONNMAN_SERVICE_STATE_DISCONNECT:
 
                reply_pending(service, ECONNABORTED);
 
@@ -5418,9 +5433,9 @@ static int service_indicate_state(struct connman_service 
*service)
                downgrade_connected_services();
 
                
__connman_service_auto_connect(CONNMAN_SERVICE_CONNECT_REASON_AUTO);
-       }
+               break;
 
-       if (new_state == CONNMAN_SERVICE_STATE_FAILURE) {
+       case CONNMAN_SERVICE_STATE_FAILURE:
 
                if (service->connect_reason == 
CONNMAN_SERVICE_CONNECT_REASON_USER &&
                        connman_agent_report_error(service, service->path,
@@ -5430,7 +5445,11 @@ static int service_indicate_state(struct connman_service 
*service)
                                        NULL) == -EINPROGRESS)
                        return 0;
                service_complete(service);
-       } else
+
+               break;
+       }
+
+       if (new_state != CONNMAN_SERVICE_STATE_FAILURE)
                set_error(service, CONNMAN_SERVICE_ERROR_UNKNOWN);
 
        service_list_sort();
-- 
1.9.1

_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman

Reply via email to