Browse Source

[3728] Catch boost and std exceptions in kea-lfc.

Marcin Siodelski 10 years ago
parent
commit
a159d2645b
2 changed files with 10 additions and 3 deletions
  1. 1 1
      src/bin/lfc/lfc_controller.cc
  2. 9 2
      src/bin/lfc/main.cc

+ 1 - 1
src/bin/lfc/lfc_controller.cc

@@ -115,7 +115,7 @@ LFCController::launch(int argc, char* argv[], const bool test_mode) {
             } else {
                 processLeases<Lease6, CSVLeaseFile6, Lease6Storage>();
             }
-        } catch (const isc::Exception& proc_ex) {
+        } catch (const std::exception& proc_ex) {
             // We don't want to do the cleanup but do want to get rid of the pid
             do_rotate = false;
             LOG_FATAL(lfc_logger, LFC_FAIL_PROCESS).arg(proc_ex.what());

+ 9 - 2
src/bin/lfc/main.cc

@@ -12,11 +12,13 @@
 // OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 // PERFORMANCE OF THIS SOFTWARE.
 
+#include <config.h>
 #include <lfc/lfc_controller.h>
 #include <exceptions/exceptions.h>
 #include <log/logger_support.h>
 #include <log/logger_manager.h>
-#include <config.h>
+#include <boost/exception/diagnostic_information.hpp>
+#include <boost/exception_ptr.hpp>
 #include <iostream>
 
 using namespace std;
@@ -37,7 +39,12 @@ int main(int argc, char* argv[]) {
     try  {
         // 'false' value disables test mode.
         lfc_controller.launch(argc, argv, false);
-    } catch (const isc::Exception& ex) {
+
+    } catch (const boost::exception& ex) {
+        std::cerr << boost::diagnostic_information(ex) << std::endl;
+        ret = EXIT_FAILURE;
+
+    } catch (const std::exception& ex) {
         std::cerr << "Service failed: " << ex.what() << std::endl;
         ret = EXIT_FAILURE;
     }