Send connman mailing list submissions to
        connman@lists.01.org

To subscribe or unsubscribe via email, send a message with subject or
body 'help' to
        connman-requ...@lists.01.org

You can reach the person managing the list at
        connman-ow...@lists.01.org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of connman digest..."

Today's Topics:

   1. RE: [PATCH 0/1] start online check even if service is not the default 
service
      (VAUTRIN Emmanuel (Canal Plus Prestataire))
   2. [PATCH] service: Fix preferred service reordering on ready state
      (VAUTRIN Emmanuel (Canal Plus Prestataire))


----------------------------------------------------------------------

Date: Fri, 14 May 2021 08:32:17 +0000
From: "VAUTRIN Emmanuel (Canal Plus Prestataire)"
        <emmanuel.vaut...@cpexterne.org>
Subject: RE: [PATCH 0/1] start online check even if service is not the
        default service
To: Daniel Wagner <w...@monom.org>, Christophe Ronco
        <c.ro...@kerlink.fr>
Cc: "connman@lists.01.org" <connman@lists.01.org>
Message-ID:  <pr1pr02mb47945dd70fbf57832a16b66a93...@pr1pr02mb4794.eur
        prd02.prod.outlook.com>
Content-Type: text/plain; charset="iso-8859-1"

Hi Daniel and Christophe,

> The problem is that service_compare() is not honoring
> PreferredTechnologies when both services are in READY/ONLINE state. I'll
> send out a patch.
Strange, by my side, I have also started working on this issue,
but I presumed the reason was elsewhere. I will keep working on my solution
and will also propose a patch soon.


Best Regards,

Emmanuel

------------------------------

Date: Fri, 14 May 2021 12:14:03 +0000
From: "VAUTRIN Emmanuel (Canal Plus Prestataire)"
        <emmanuel.vaut...@cpexterne.org>
Subject: [PATCH] service: Fix preferred service reordering on ready
        state
To: "connman@lists.01.org" <connman@lists.01.org>
Message-ID:  <pr1pr02mb4794762ef5518cf417cd547f93...@pr1pr02mb4794.eur
        prd02.prod.outlook.com>
Content-Type: text/plain; charset="iso-8859-1"

When a service reaches the ready state, the service list shall always
be reordered according to the PreferredTechnologies config options.

This issue can be reproduced with PreferredTechnologies=ethernet,wifi,
by following the steps below:
1. Starting, Ethernet (E) plugged, with a known Wifi (W) network.
E idle -> online, W idle -> ready
2. Unplug Ethernet.
E online -> idle, W ready -> online
3. Plug Ethernet.
E idle -> ready, W online
Even if Ethernet has the highest priority, it will never be online,
except if Wifi connection is lost.

Fixes: e600366f6035 ("service: Start online check on IP address update")
---
 src/service.c | 17 ++++++-----------
 1 file changed, 6 insertions(+), 11 deletions(-)

diff --git a/src/service.c b/src/service.c
index 20917a8923a4..cadd9fc76881 100644
--- a/src/service.c
+++ b/src/service.c
@@ -4711,15 +4711,11 @@ static void apply_relevant_default_downgrade(struct 
connman_service *service)
        struct connman_service *def_service;
 
        def_service = connman_service_get_default();
-       if (!def_service)
+       if (!def_service || def_service != service ||
+               def_service->state != CONNMAN_SERVICE_STATE_ONLINE)
                return;
 
-       if (def_service == service &&
-                       def_service->state == CONNMAN_SERVICE_STATE_ONLINE) {
-               def_service->state = CONNMAN_SERVICE_STATE_READY;
-               __connman_notifier_leave_online(def_service->type);
-               state_changed(def_service);
-       }
+       downgrade_state(def_service);
 }
 
 static void switch_default_service(struct connman_service *default_service,
@@ -5898,8 +5894,7 @@ static int service_update_preferred_order(struct 
connman_service *default_servic
        unsigned int *tech_array;
        int i;
 
-       if (!default_service || default_service == new_service ||
-                       default_service->state != new_state)
+       if (!default_service || default_service == new_service)
                return 0;
 
        tech_array = connman_setting_get_uint_list("PreferredTechnologies");
@@ -6051,12 +6046,12 @@ static int service_indicate_state(struct 
connman_service *service)
 
                service->new_service = false;
 
-               default_changed();
-
                def_service = connman_service_get_default();
 
                service_update_preferred_order(def_service, service, new_state);
 
+               default_changed();
+
                __connman_service_set_favorite(service, true);
 
                reply_pending(service, 0);
-- 
2.25.1


------------------------------

Subject: Digest Footer

_______________________________________________
connman mailing list -- connman@lists.01.org
To unsubscribe send an email to connman-le...@lists.01.org


------------------------------

End of connman Digest, Vol 67, Issue 10
***************************************

Reply via email to