This fixes inconcistant behavior in signaling IPv4 changes when
connected or disconnected happen.
---
 src/peer.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/peer.c b/src/peer.c
index 5e9006f..99252f9 100644
--- a/src/peer.c
+++ b/src/peer.c
@@ -911,6 +911,10 @@ int connman_peer_set_state(struct connman_peer *peer,
        peer->state = new_state;
        state_changed(peer);
 
+       if (peer->state == CONNMAN_PEER_STATE_READY ||
+                               peer->state == CONNMAN_PEER_STATE_DISCONNECT)
+               settings_changed(peer);
+
        return 0;
 }
 
@@ -1002,7 +1006,8 @@ static void peer_ip_bound(struct connman_ipconfig 
*ipconfig,
 
        DBG("%s ip bound", ifname);
 
-       settings_changed(peer);
+       if (peer->state == CONNMAN_PEER_STATE_READY)
+               settings_changed(peer);
        connman_peer_set_state(peer, CONNMAN_PEER_STATE_READY);
 }
 
@@ -1013,7 +1018,8 @@ static void peer_ip_release(struct connman_ipconfig 
*ipconfig,
 
        DBG("%s ip release", ifname);
 
-       settings_changed(peer);
+       if (peer->state == CONNMAN_PEER_STATE_READY)
+               settings_changed(peer);
 }
 
 static const struct connman_ipconfig_ops peer_ip_ops = {
-- 
2.0.5

_______________________________________________
connman mailing list
connman@connman.net
https://lists.connman.net/mailman/listinfo/connman

Reply via email to