summaryrefslogtreecommitdiff
path: root/src/resolve/resolved-dns-server.c
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2020-07-13 09:05:15 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2020-07-21 04:04:49 +0900
commit1b86009298c0c15678abb976e561de64f65decc9 (patch)
treeea385ecafed601c96d14c68a6a530226b1ebfbdf /src/resolve/resolved-dns-server.c
parentda9de7385adc2329bdd75351db9fdbb4a2f90897 (diff)
downloadsystemd-1b86009298c0c15678abb976e561de64f65decc9.tar.gz
resolve: also compare port and SNI in dns_server_find()
Diffstat (limited to 'src/resolve/resolved-dns-server.c')
-rw-r--r--src/resolve/resolved-dns-server.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/resolve/resolved-dns-server.c b/src/resolve/resolved-dns-server.c
index b4f2a8c97f..1bd9c6fcbd 100644
--- a/src/resolve/resolved-dns-server.c
+++ b/src/resolve/resolved-dns-server.c
@@ -666,11 +666,15 @@ void dns_server_mark_all(DnsServer *first) {
dns_server_mark_all(first->servers_next);
}
-DnsServer *dns_server_find(DnsServer *first, int family, const union in_addr_union *in_addr, int ifindex) {
+DnsServer *dns_server_find(DnsServer *first, int family, const union in_addr_union *in_addr, uint16_t port, int ifindex, const char *name) {
DnsServer *s;
LIST_FOREACH(servers, s, first)
- if (s->family == family && in_addr_equal(family, &s->address, in_addr) > 0 && s->ifindex == ifindex)
+ if (s->family == family &&
+ in_addr_equal(family, &s->address, in_addr) > 0 &&
+ s->port == port &&
+ s->ifindex == ifindex &&
+ streq_ptr(s->server_name, name))
return s;
return NULL;