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