Browse Source

[support8785] std::exception, not just isc::Exception is caught

  If std::exception would be thrown anywhere in message processing
  in Dhcp4Srv::run(), we would not catch it. In principle, that
  should never happen, as the Kea code only throws isc::Exception
  derivatives, but maybe some of the system or boost calls could
  throw std::exception.
Tomek Mrugalski 9 years ago
parent
commit
f1982bb487
1 changed files with 5 additions and 4 deletions
  1. 5 4
      src/bin/dhcp4/dhcp4_srv.cc

+ 5 - 4
src/bin/dhcp4/dhcp4_srv.cc

@@ -617,11 +617,12 @@ Dhcpv4Srv::run() {
                 // "switch" statement.
                 // "switch" statement.
                 ;
                 ;
             }
             }
-        } catch (const isc::Exception& e) {
+        } catch (const std::exception& e) {
 
 
-            // Catch-all exception (at least for ones based on the isc Exception
-            // class, which covers more or less all that are explicitly raised
-            // in the Kea code).  Just log the problem and ignore the packet.
+            // Catch-all exception (we used to call only isc::Exception, but
+            // std::exception could potentially be raised and if we don't catch
+            // it here, it would be caught in main() and the process would
+            // terminate).  Just log the problem and ignore the packet.
             // (The problem is logged as a debug message because debug is
             // (The problem is logged as a debug message because debug is
             // disabled by default - it prevents a DDOS attack based on the
             // disabled by default - it prevents a DDOS attack based on the
             // sending of problem packets.)
             // sending of problem packets.)