From a880cf2c775982f35f080c207176ecbadf751aa3 Mon Sep 17 00:00:00 2001 From: Elena Tebesoi Date: Mon, 21 May 2012 17:48:20 +0200 Subject: resolver: Fixed cleanup of Resolver timer When connman is restarted, DNS servers are removed and added again with function __connman_resolver_redo_servers(). While removing a DNS entry, one should also remove the resolver timer registered for it. Not doing so, causes the timeout handler resolver_expire_cb to fire without being explicitly set. --- src/resolver.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/resolver.c') diff --git a/src/resolver.c b/src/resolver.c index 58af2f78..421b12f0 100644 --- a/src/resolver.c +++ b/src/resolver.c @@ -493,6 +493,13 @@ int __connman_resolver_redo_servers(const char *interface) */ __connman_dnsproxy_remove(entry->interface, entry->domain, entry->server); + /* + * Remove also the resolver timer for the old server entry. + * A new timer will be set for the new server entry + * when the next Router Advertisement message arrives + * with RDNSS/DNSSL settings. + */ + g_source_remove(entry->timeout); __connman_dnsproxy_append(entry->interface, entry->domain, entry->server); -- cgit v1.2.3