]> git.ipfire.org Git - thirdparty/systemd.git/commit
resolved: rework dns server lifecycle logic
authorLennart Poettering <lennart@poettering.net>
Tue, 24 Nov 2015 16:59:40 +0000 (17:59 +0100)
committerLennart Poettering <lennart@poettering.net>
Wed, 25 Nov 2015 20:58:37 +0000 (21:58 +0100)
commit0eac462399c8e87bcce252cf058eba9f2678f2bd
tree31f3297ad47d256ebcc5dba55697e21431341174
parentf2f1dbe50fea13abadc9c1e845a29031b90b40f3
resolved: rework dns server lifecycle logic

Previously, there was a chance of memory corruption, because when
switching to the next DNS server we didn't care whether they linked list
of DNS servers was still valid.

Clean up lifecycle of the dns server logic:

- When a DnsServer object is still in the linked list of DnsServers for
  a link or the manager, indicate so with a "linked" boolean field, and
  never follow the linked list if that boolean is not set.

- When picking a DnsServer to use for a link ot manager, always
  explicitly take a reference.

This also rearranges some logic, to make the tracking of dns servers by
link and globally more alike.
src/resolve/resolved-conf.c
src/resolve/resolved-dns-server.c
src/resolve/resolved-dns-server.h
src/resolve/resolved-link.c
src/resolve/resolved-link.h
src/resolve/resolved-manager.c
src/resolve/resolved-resolv-conf.c