diff --git a/src/systemd_resolved_docker/dockerdnsconnector.py b/src/systemd_resolved_docker/dockerdnsconnector.py
index f4eb408376c3965f40d2a2f80a99ab75a64ce0cd..70aa2fbce172485e2cee606b3960cee49d752bb4 100644
--- a/src/systemd_resolved_docker/dockerdnsconnector.py
+++ b/src/systemd_resolved_docker/dockerdnsconnector.py
@@ -24,6 +24,7 @@ class DockerDNSConnector:
         self.dns_domains = dns_domains
         self.docker_interface = docker_interface
         self.handler = handler
+        self.resolved_registered = False
 
         self.dns_domains_globs = ['*%s' % domain if domain.startswith('.') else domain for domain in dns_domains]
 
@@ -62,6 +63,9 @@ class DockerDNSConnector:
         self.handler.on_stop()
 
     def update_resolved(self, enabled=True):
+        if self.resolved_registered == enabled:
+            return
+
         with IPRoute() as ipr:
             ifi = ipr.link_lookup(ifname=self.docker_interface)
             if not ifi:
@@ -88,6 +92,8 @@ class DockerDNSConnector:
             else:
                 manager.RevertLink(ifindex)
 
+        self.resolved_registered = enabled
+
     def handle_hosts(self, hosts):
         zone = []
         host_names = []
diff --git a/src/systemd_resolved_docker/zoneresolver.py b/src/systemd_resolved_docker/zoneresolver.py
index 1a125ca888c9c099f28993efe911b9c593194f61..6147b6e2b96f51bb6adf1337883207d35f34776d 100644
--- a/src/systemd_resolved_docker/zoneresolver.py
+++ b/src/systemd_resolved_docker/zoneresolver.py
@@ -32,27 +32,29 @@ class ZoneResolver(BaseResolver):
         qname = request.q.qname
         qtype = QTYPE[request.q.qtype]
 
+        found_name_match = False
+
         zone = self.zone
         for name, rtype, rr in zone:
             # Check if label & type match
-            if getattr(qname, self.eq)(name) and (qtype == rtype or
-                                                  qtype == 'ANY' or
-                                                  rtype == 'CNAME'):
-                # If we have a glob match fix reply label
-                if self.glob:
-                    a = copy.copy(rr)
-                    a.rname = qname
-                    reply.add_answer(a)
-                else:
-                    reply.add_answer(rr)
-                # Check for A/AAAA records associated with reply and
-                # add in additional section
-                if rtype in ['CNAME', 'NS', 'MX', 'PTR']:
-                    for a_name, a_rtype, a_rr in zone:
-                        if a_name == rr.rdata.label and a_rtype in ['A', 'AAAA']:
-                            reply.add_ar(a_rr)
-
-        if not reply.rr:
+            if getattr(qname, self.eq)(name):
+                found_name_match = True
+                if qtype == rtype or qtype == 'ANY' or rtype == 'CNAME':
+                    # If we have a glob match fix reply label
+                    if self.glob:
+                        a = copy.copy(rr)
+                        a.rname = qname
+                        reply.add_answer(a)
+                    else:
+                        reply.add_answer(rr)
+                    # Check for A/AAAA records associated with reply and
+                    # add in additional section
+                    if rtype in ['CNAME', 'NS', 'MX', 'PTR']:
+                        for a_name, a_rtype, a_rr in zone:
+                            if a_name == rr.rdata.label and a_rtype in ['A', 'AAAA']:
+                                reply.add_ar(a_rr)
+
+        if not found_name_match:
             reply.header.rcode = RCODE.NXDOMAIN
 
         return reply