]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[4206_0.9.2] fix for empty client-id in v4
authorTomek Mrugalski <tomasz@isc.org>
Mon, 7 Dec 2015 16:51:20 +0000 (17:51 +0100)
committerTomek Mrugalski <tomasz@isc.org>
Mon, 7 Dec 2015 16:51:20 +0000 (17:51 +0100)
src/bin/dhcp4/dhcp4_messages.mes
src/bin/dhcp4/dhcp4_srv.cc

index f8e471bbdb024cfab95ebdde29024cb0b45c1fec..fc992a09c031e79cd83b43c68733b4b45f512cde 100644 (file)
@@ -429,6 +429,11 @@ This error message is issued when preparing an on-wire format of the packet
 has failed. The first argument identifies the client and the DHCP transaction.
 The second argument includes the error string.
 
+% DHCP4_PACKET_PROCESS_EXCEPTION exception occurred during packet processing: %1
+This error message indicates that an exception was raised during packet processing
+that was not caught by other, more specific exception handlers. This packet will
+be dropped and the server will continue operation.
+
 % DHCP4_PACKET_RECEIVED %1: %2 (type %3) received from %4 to %5 on interface %6
 A debug message noting that the server has received the specified type of
 packet on the specified interface. The first argument specifies the
index 6ade319bd709f939eb2f85182cd0459469adf771..1bdfc9a58e73414719882a897d7f9efacbc7f950 100644 (file)
@@ -357,6 +357,8 @@ Dhcpv4Srv::run() {
         Pkt4Ptr query;
         Pkt4Ptr rsp;
 
+        try {
+
         try {
             // The lease database backend may install some timers for which
             // the handlers need to be executed periodically. Retrieve the
@@ -716,6 +718,20 @@ Dhcpv4Srv::run() {
                 .arg(rsp->getLabel())
                 .arg(e.what());
         }
+
+        } catch (const std::exception& e) {
+            // General catch-all exception that are not caught by more specific
+            // catches. This one is for exceptions derived from std::exception.
+            LOG_ERROR(packet4_logger, DHCP4_PACKET_PROCESS_EXCEPTION)
+                .arg(e.what());
+        } catch (...) {
+            // General catch-all exception that are not caught by more specific
+            // catches. This one is for other exceptions, not derived from
+            // std::exception.
+            LOG_ERROR(packet4_logger, DHCP4_PACKET_PROCESS_EXCEPTION)
+                .arg("an unknown exception not derived from std::exception");
+        }
+
     }
 
     return (true);