diff options
Diffstat (limited to 'src/connection.c')
-rw-r--r-- | src/connection.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/src/connection.c b/src/connection.c index 58adfeb6..2b18ef5c 100644 --- a/src/connection.c +++ b/src/connection.c @@ -227,9 +227,13 @@ static struct gateway_data *add_gateway(struct connman_service *service, data->ipv4_gateway = old->ipv4_gateway; old->ipv4_gateway = NULL; } + } else { + /* + * Only take a ref if we are adding new stuff to hash. + */ + connman_service_ref(service); } - connman_service_ref(service); g_hash_table_replace(gateway_hash, service, data); return data; @@ -713,14 +717,6 @@ void __connman_connection_gateway_remove(struct connman_service *service, err = disable_gateway(data, type); /* - * We may refcount service twice seperately for ipv4 and ipv6 - * then we need to unref accordingly. - */ - if (do_ipv4 == do_ipv6 && data->ipv4_gateway != NULL && - data->ipv6_gateway != NULL) - connman_service_unref(service); - - /* * We remove the service from the hash only if all the gateway * settings are to be removed. */ |