Rename __connman_network_set_ipconfig() to
__connman_network_reconfigure_ipconfig() and make a check that the
network is connected or connecting. This function is used when
updating connected or connecting network IP configuration.
---
 src/connman.h |    2 +-
 src/network.c |    7 +++++--
 src/service.c |    4 ++--
 3 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/connman.h b/src/connman.h
index b63e658..6e6f7ef 100644
--- a/src/connman.h
+++ b/src/connman.h
@@ -519,7 +519,7 @@ int __connman_network_connect(struct connman_network 
*network);
 int __connman_network_disconnect(struct connman_network *network);
 int __connman_network_clear_ipconfig(struct connman_network *network,
                                        struct connman_ipconfig *ipconfig);
-int __connman_network_set_ipconfig(struct connman_network *network,
+int __connman_network_reconfigure_ipconfig(struct connman_network *network,
                                struct connman_ipconfig *ipconfig_ipv4,
                                struct connman_ipconfig *ipconfig_ipv6);
 
diff --git a/src/network.c b/src/network.c
index 0736068..a55f31d 100644
--- a/src/network.c
+++ b/src/network.c
@@ -1615,7 +1615,7 @@ int __connman_network_clear_ipconfig(struct 
connman_network *network,
        return 0;
 }
 
-int __connman_network_set_ipconfig(struct connman_network *network,
+int __connman_network_reconfigure_ipconfig(struct connman_network *network,
                                        struct connman_ipconfig *ipconfig_ipv4,
                                        struct connman_ipconfig *ipconfig_ipv6)
 {
@@ -1625,6 +1625,9 @@ int __connman_network_set_ipconfig(struct connman_network 
*network,
        if (network == NULL)
                return -EINVAL;
 
+       if (network->connected == FALSE && network->connecting == FALSE)
+               return -ENOTCONN;
+
        if (ipconfig_ipv6) {
                method = __connman_ipconfig_get_method(ipconfig_ipv6);
 
@@ -1649,7 +1652,7 @@ int __connman_network_set_ipconfig(struct connman_network 
*network,
                }
        }
 
-       if (ipconfig_ipv4) {
+       if (ipconfig_ipv4 != NULL) {
                method = __connman_ipconfig_get_method(ipconfig_ipv4);
 
                switch (method) {
diff --git a/src/service.c b/src/service.c
index bba548e..1bb8f9a 100644
--- a/src/service.c
+++ b/src/service.c
@@ -3299,7 +3299,7 @@ static DBusMessage *set_property(DBusConnection *conn,
                if (err < 0) {
                        if (is_connected_state(service, state) ||
                                        is_connecting_state(service, state))
-                               __connman_network_set_ipconfig(service->network,
+                               
__connman_network_reconfigure_ipconfig(service->network,
                                                service->ipconfig_ipv4,
                                                service->ipconfig_ipv6);
                        return __connman_error_failed(msg, -err);
@@ -3311,7 +3311,7 @@ static DBusMessage *set_property(DBusConnection *conn,
                        ipv6_configuration_changed(service);
 
                if (is_connecting(service) || is_connected(service))
-                       __connman_network_set_ipconfig(service->network,
+                       __connman_network_reconfigure_ipconfig(service->network,
                                        service->ipconfig_ipv4,
                                        service->ipconfig_ipv6);
 
-- 
1.7.10.4

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

Reply via email to