Parcourir la source

[1790] Bugfix _do_auth_loadzone implementation

Mukund Sivaraman il y a 13 ans
Parent
commit
c46763c887
1 fichiers modifiés avec 14 ajouts et 8 suppressions
  1. 14 8
      src/bin/xfrin/xfrin.py.in

+ 14 - 8
src/bin/xfrin/xfrin.py.in

@@ -1549,18 +1549,25 @@ class Xfrin:
         if is_default:
             return
         for d in datasources:
-            if d.has_key("class"):
+            if "class" in d:
                 dclass = d["class"]
             else:
                 dclass = "IN"
-            if d["type"].lower() == "memory" and dclass.lower() == zone_class.lower():
+            if d["type"].lower() == "memory" and dclass.lower() == zone_class.to_text().lower():
                 for zone in d["zones"]:
-                    if zone["filetype"].lower() == "sqlite3" and\
-                            zone["origin"].lower() == zone_name.lower():
-                        param = {"origin": zone_name.to_text(),
+                    # Remove trailing periods
+                    n1 = zone["origin"]
+                    if n1[-1] == '.':
+                        n1 = n1[:-1]
+                    n2 = zone_name.to_text()
+                    if n2[-1] == '.':
+                        n2 = n2[:-1]
+
+                    if zone["filetype"].lower() == "sqlite3" and n1.lower() == n2.lower():
+                        param = {"origin": n1,
                                  "class": zone_class.to_text(),
                                  "datasrc": d["type"]}
-                        logger.debug(XFRIN_AUTH_LOADZONE,
+                        logger.debug(DBG_XFRIN_TRACE, XFRIN_AUTH_LOADZONE,
                                      param["origin"], param["class"], param["datasrc"])
 
                         msg = create_command("loadzone", param)
@@ -1583,6 +1590,7 @@ class Xfrin:
         param = {'zone_name': zone_name.to_text(),
                  'zone_class': zone_class.to_text()}
         if xfr_result == XFRIN_OK:
+            self._do_auth_loadzone(zone_name, zone_class)
             msg = create_command(notify_out.ZONE_NEW_DATA_READY_CMD, param)
             # catch the exception, in case msgq has been killed.
             try:
@@ -1602,8 +1610,6 @@ class Xfrin:
             except socket.error as err:
                 logger.error(XFRIN_MSGQ_SEND_ERROR, XFROUT_MODULE_NAME, ZONE_MANAGER_MODULE_NAME)
 
-            self._do_auth_loadzone(zone_name, zone_class)
-
         else:
             msg = create_command(ZONE_XFRIN_FAILED, param)
             # catch the exception, in case msgq has been killed.