[svn] commit: r1697 - /trunk/src/bin/xfrin/xfrin.py.in

BIND 10 source code commits bind10-changes at lists.isc.org
Thu Apr 8 09:45:06 UTC 2010


Author: zhanglikun
Date: Thu Apr  8 09:45:05 2010
New Revision: 1697

Log:
Make log message more readable when xfrin failed.

Modified:
    trunk/src/bin/xfrin/xfrin.py.in

Modified: trunk/src/bin/xfrin/xfrin.py.in
==============================================================================
--- trunk/src/bin/xfrin/xfrin.py.in (original)
+++ trunk/src/bin/xfrin/xfrin.py.in Thu Apr  8 09:45:05 2010
@@ -90,9 +90,17 @@
         self._soa_rr_count = 0
         self._idle_timeout = idle_timeout
         self.setblocking(1)
-        self.connect((master_addr, port))
         self._shutdown_event = shutdown_event
         self._verbose = verbose
+
+    def connect_to_master(self, master_addr, port):
+        '''Connect to master in TCP.'''
+        try:
+            self.connect((master_addr, port))
+            return True
+        except socket.error as e:
+            self.log_msg('Failed to connect:(%s:%d), %s' % (master_addr, port, str(e)))
+            return False
 
     def _create_query(self, query_type):
         '''Create dns query message. '''
@@ -164,21 +172,22 @@
             if check_soa:
                 ret =  self._check_soa_serial()
             
-            self.log_msg('transfer of \'%s\': AXFR started' % self._zone_name)
+            logstr = 'transfer of \'%s\': AXFR ' % self._zone_name
             if ret == XFRIN_OK:    
+                self.log_msg(logstr + 'started')
                 self._send_query(rr_type.AXFR())
                 isc.auth.sqlite3_ds.load(self._db_file, self._zone_name,
                                          self._handle_xfrin_response)
 
-            endmsg = 'succeeded' if ret == XFRIN_OK else 'failed'
-            self.log_msg('transfer of \'%s\' AXFR %s' % (self._zone_name,
-                                                         endmsg))
+                self.log_msg(logstr + 'succeeded')
+
         except XfrinException as e:
             self.log_msg(e)
-            self.log_msg('Error happened during xfrin!')
+            self.log_msg(logstr + 'failed')
             #TODO, recover data source.
         except isc.auth.sqlite3_ds.Sqlite3DSError as e:
             self.log_msg(e)
+            self.log_msg(logstr + 'failed')
         finally:
            self.close()
 
@@ -186,8 +195,9 @@
     
     def _check_response_status(self, msg):
         #TODO, check more?
-        if msg.get_rcode() != rcode.NOERROR():
-            raise XfrinException('error response: ')
+        msg_rcode = msg.get_rcode()
+        if msg_rcode != rcode.NOERROR():
+            raise XfrinException('error response: %s' % msg_rcode.to_text())
 
         if not msg.get_header_flag(message_flag.QR()):
             raise XfrinException('response is not a response ')
@@ -269,13 +279,12 @@
 
 def process_xfrin(xfrin_recorder, zone_name, db_file, 
                   shutdown_event, master_addr, port, check_soa, verbose):
+    port = int(port)
     xfrin_recorder.increment(zone_name)
-    try:
-        conn = XfrinConnection(zone_name, db_file, shutdown_event, 
-                           master_addr, int(port), check_soa, verbose)
+    conn = XfrinConnection(zone_name, db_file, shutdown_event, 
+                           master_addr, port, check_soa, verbose)
+    if conn.connect_to_master(master_addr, port):
         conn.do_xfrin(False)
-    except Exception as e:
-        log_error(str(e))
 
     xfrin_recorder.decrement(zone_name)
 




More information about the bind10-changes mailing list