]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[2013] intermediate cleanup: make message and renderer reusable.
authorJINMEI Tatuya <jinmei@isc.org>
Tue, 29 May 2012 22:48:16 +0000 (15:48 -0700)
committerJINMEI Tatuya <jinmei@isc.org>
Wed, 30 May 2012 23:34:43 +0000 (16:34 -0700)
src/bin/ddns/ddns.py.in

index 033087c8ea5fb9e0c2b5ac82f3d0b30cffe11df2..7abc1eaf6830a74a65aca97509d6c5c7f0ebe278 100755 (executable)
@@ -123,7 +123,11 @@ class DDNSServer:
         self._listen_socket.bind(SOCKET_FILE)
         self._listen_socket.listen(16)
 
-        # The following attributes are essentially private and constant,
+        # Create reusable resources
+        self.__request_msg = Message(Message.PARSE)
+        self.__response_renderer = MessageRenderer()
+
+        # The following attribute(s) are essentially private and constant,
         # but defined as "protected" so that test code can customize them.
         # They should not be overridden for any other purposes.
         #
@@ -244,12 +248,12 @@ class DDNSServer:
         # or dropped by the sender, so if such error is detected we treat it
         # as an internal error and don't bother to respond.
         try:
-            msg = Message(Message.PARSE)
-            msg.from_wire(req_data)
-            if msg.get_opcode() != Opcode.UPDATE():
+            self.__request_msg.clear(Message.PARSE)
+            self.__request_msg.from_wire(req_data)
+            if self.__request_msg.get_opcode() != Opcode.UPDATE():
                 raise SessionError('Update request has unexpected opcode: ' +
-                                   str(msg.get_opcode()))
-            tsig_ctx = self.__check_request_tsig(msg, req_data)
+                                   str(self.__request_msg.get_opcode()))
+            tsig_ctx = self.__check_request_tsig(self.__request_msg, req_data)
         except Exception as ex:
             logger.error(DDNS_REQUEST_PARSE_FAIL, ex)
             return False
@@ -258,7 +262,8 @@ class DDNSServer:
         # just drop the packet.
 
         # Let an update session object handle the request.
-        update_session = self._UpdateSessionClass(msg, remote_addr, None)
+        update_session = self._UpdateSessionClass(self.__request_msg,
+                                                  remote_addr, None)
         result, zname, zclass = update_session.handle()
 
         # If the request should be dropped, we're done; otherwise, send the
@@ -266,12 +271,12 @@ class DDNSServer:
         if result == isc.ddns.session.UPDATE_DROP:
             return False
         msg = update_session.get_message()
-        renderer = MessageRenderer()
+        self.__response_renderer.clear()
         if tsig_ctx is not None:
-            msg.to_wire(renderer, tsig_ctx)
+            msg.to_wire(self.__response_renderer, tsig_ctx)
         else:
-            msg.to_wire(renderer)
-        sock.sendto(renderer.get_data(), remote_addr)
+            msg.to_wire(self.__response_renderer)
+        sock.sendto(self.__response_renderer.get_data(), remote_addr)
 
         return True