diff --git a/components/livestatus/listener.cpp b/components/livestatus/listener.cpp index 1d0bd444f..32395de62 100644 --- a/components/livestatus/listener.cpp +++ b/components/livestatus/listener.cpp @@ -132,9 +132,17 @@ void LivestatusListener::ClientThreadProc(const Socket::Ptr& client) break; } - Query::Ptr query = make_shared(lines, GetCompatLogPath()); - if (!query->Execute(stream)) - break; + try { + Query::Ptr query = make_shared(lines, GetCompatLogPath()); + if (!query->Execute(stream)) + break; + } catch (const std::exception& ex) { + std::ostringstream info; + info << "Exception thrown while running livestatus query: " << std::endl + << boost::diagnostic_information(ex); + Log(LogCritical, "livestatus", info.str()); + return; + } } { diff --git a/test/livestatus/queries/custom/scrambled b/test/livestatus/queries/custom/scrambled new file mode 100644 index 000000000..01fe008a0 --- /dev/null +++ b/test/livestatus/queries/custom/scrambled @@ -0,0 +1,2 @@ +D +