---
src/service.c | 46 ++++++++++++++++++++++++++--------------------
1 files changed, 26 insertions(+), 20 deletions(-)
diff --git a/src/service.c b/src/service.c
index 14de1d0..994eaa6 100644
--- a/src/service.c
+++ b/src/service.c
@@ -2039,6 +2039,7 @@ static DBusMessage *set_property(DBusConnection *conn,
g_str_equal(name, "IPv6.Configuration")) {
enum connman_ipconfig_type type = CONNMAN_IPCONFIG_TYPE_UNKNOWN;
+ struct connman_ipconfig *ipv4 = NULL, *ipv6 = NULL;
int err = 0;
DBG("%s", name);
@@ -2047,31 +2048,37 @@ static DBusMessage *set_property(DBusConnection *conn,
service->ipconfig_ipv6 == NULL)
return __connman_error_invalid_property(msg);
- if (is_connecting(service) ||
- is_connected(service)) {
- __connman_network_clear_ipconfig(service->network,
- service->ipconfig_ipv4);
- __connman_network_clear_ipconfig(service->network,
- service->ipconfig_ipv6);
- }
-
if (g_str_equal(name, "IPv4.Configuration") == TRUE) {
+
+ if (is_connecting(service) || is_connected(service))
+ __connman_network_clear_ipconfig(
+ service->network,
+ service->ipconfig_ipv4);
+
+ ipv4 = service->ipconfig_ipv4;
type = CONNMAN_IPCONFIG_TYPE_IPV4;
- err = __connman_ipconfig_set_config(
- service->ipconfig_ipv4, type, &value);
+ err = __connman_ipconfig_set_config(ipv4, type,
+ &value);
+
} else if (g_str_equal(name, "IPv6.Configuration") == TRUE) {
+
+ if (is_connecting(service) || is_connected(service))
+ __connman_network_clear_ipconfig(
+ service->network,
+ service->ipconfig_ipv6);
+
+ ipv6 = service->ipconfig_ipv6;
type = CONNMAN_IPCONFIG_TYPE_IPV6;
- err = __connman_ipconfig_set_config(
- service->ipconfig_ipv6, type, &value);
+ err = __connman_ipconfig_set_config(ipv6, type,
+ &value);
}
if (err < 0) {
- if (is_connected(service) ||
- is_connecting(service))
+ if (is_connected(service) || is_connecting(service))
__connman_network_set_ipconfig(
service->network,
- service->ipconfig_ipv4,
- service->ipconfig_ipv6);
+ ipv4,
+ ipv6);
return __connman_error_failed(msg, -err);
}
@@ -2080,11 +2087,10 @@ static DBusMessage *set_property(DBusConnection *conn,
else if (type == CONNMAN_IPCONFIG_TYPE_IPV6)
ipv6_configuration_changed(service);
- if (is_connecting(service) ||
- is_connected(service))
+ if (is_connecting(service) || is_connected(service))
__connman_network_set_ipconfig(service->network,
- service->ipconfig_ipv4,
- service->ipconfig_ipv6);
+ ipv4,
+ ipv6);
__connman_storage_save_service(service);
} else
--
1.7.0.4
_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman