From eb943953d2795a273b4426006f01852ed5d41bdf Mon Sep 17 00:00:00 2001 From: Kees Monshouwer Date: Sun, 18 May 2014 00:37:56 +0200 Subject: [PATCH] catch non-fatal exceptions in control listener loop --- pdns/dynlistener.cc | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/pdns/dynlistener.cc b/pdns/dynlistener.cc index 1432da2e04..ad556ee83a 100644 --- a/pdns/dynlistener.cc +++ b/pdns/dynlistener.cc @@ -330,15 +330,29 @@ void DynListener::theListener() continue; } - parts[0] = toUpper( parts[0] ); - if(s_funcdb.count(parts[0])) - sendlines((*(s_funcdb[parts[0]].func))(parts,d_ppid)); - else if (parts[0] == "HELP") - sendlines(getHelp()); - else if(s_restfunc) - sendlines((*s_restfunc)(parts,d_ppid)); - else - sendlines("Unknown command: '"+parts[0]+"'"); + try { + parts[0] = toUpper( parts[0] ); + if(s_funcdb.count(parts[0])) + sendlines((*(s_funcdb[parts[0]].func))(parts,d_ppid)); + else if (parts[0] == "HELP") + sendlines(getHelp()); + else if(s_restfunc) + sendlines((*s_restfunc)(parts,d_ppid)); + else + sendlines("Unknown command: '"+parts[0]+"'"); + } + catch(PDNSException &AE) { + L<