diff --git a/config/unbound/unbound-dhcp-leases-bridge 
b/config/unbound/unbound-dhcp-leases-bridge
index e9f022aff..d22772066 100644
--- a/config/unbound/unbound-dhcp-leases-bridge
+++ b/config/unbound/unbound-dhcp-leases-bridge
@@ -22,6 +22,7 @@
  import argparse
  import datetime
  import daemon
+import filecmp
  import functools
  import ipaddress
  import logging
@@ -516,26 +517,35 @@ class UnboundConfigWriter(object):

      def update_dhcp_leases(self, leases):
          # Write out all leases
-        self.write_dhcp_leases(leases)
+        if self.write_dhcp_leases(leases):

-        log.debug("Reloading Unbound...")
+            log.debug("Reloading Unbound...")

-        # Reload the configuration without dropping the cache
-        self._control("reload_keep_cache")
+            # Reload the configuration without dropping the cache
+            self._control("reload_keep_cache")
+
+        else:
+
+            log.debug("Not reloading Unbound. Leases not changed.")

      def write_dhcp_leases(self, leases):
          log.debug("Writing DHCP leases...")

          with tempfile.NamedTemporaryFile(mode="w", delete=False) as f:
-            for l in leases:
+            for l in sorted(leases):
                  for rr in l.rrset:
                      f.write("local-data: \"%s\"\n" % " ".join(rr))

-            # Make file readable for everyone
-            os.fchmod(f.fileno(), 
stat.S_IRUSR|stat.S_IWUSR|stat.S_IRGRP|stat.S_IROTH)
+        filecmp.clear_cache()
+        RequireUnboundReload = not filecmp.cmp(f.name, self.path, 
shallow=False)
+
+        # Make file readable for everyone
+        os.chmod(f.name, 
stat.S_IRUSR|stat.S_IWUSR|stat.S_IRGRP|stat.S_IROTH)
+
+        # Move the file to its destination
+        os.rename(f.name, self.path)

-            # Move the file to its destination
-            os.rename(f.name, self.path)
+        return RequireUnboundReload
