Fixes BMC#23715
---
 src/service.c |   16 +++++++++++-----
 1 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/src/service.c b/src/service.c
index bb01e6f..f2e597f 100644
--- a/src/service.c
+++ b/src/service.c
@@ -5564,12 +5564,13 @@ struct connman_service * 
__connman_service_create_from_network(struct connman_ne
 
 void __connman_service_update_from_network(struct connman_network *network)
 {
+       connman_bool_t need_sort = FALSE;
        struct connman_service *service;
+       connman_bool_t stats_enable;
        connman_uint8_t strength;
        connman_bool_t roaming;
        GSequenceIter *iter;
        const char *name;
-       connman_bool_t stats_enable;
 
        DBG("network %p", network);
 
@@ -5597,28 +5598,33 @@ void __connman_service_update_from_network(struct 
connman_network *network)
                goto roaming;
 
        service->strength = strength;
+       need_sort = TRUE;
 
        strength_changed(service);
 
 roaming:
        roaming = connman_network_get_bool(service->network, "Roaming");
        if (roaming == service->roaming)
-               return;
+               goto sorting;
 
        stats_enable = stats_enabled(service);
        if (stats_enable == TRUE)
                stats_stop(service);
 
        service->roaming = roaming;
+       need_sort = TRUE;
 
        if (stats_enable == TRUE)
                stats_start(service);
 
        roaming_changed(service);
 
-       iter = g_hash_table_lookup(service_hash, service->identifier);
-       if (iter != NULL)
-               g_sequence_sort_changed(iter, service_compare, NULL);
+sorting:
+       if (need_sort == TRUE) {
+               iter = g_hash_table_lookup(service_hash, service->identifier);
+               if (iter != NULL)
+                       g_sequence_sort_changed(iter, service_compare, NULL);
+       }
 }
 
 void __connman_service_remove_from_network(struct connman_network *network)
-- 
1.7.8.rc3

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

Reply via email to