diff --git a/userspace/engine/filter_macro_resolver.cpp b/userspace/engine/filter_macro_resolver.cpp index a9e15e7f..f872ac96 100644 --- a/userspace/engine/filter_macro_resolver.cpp +++ b/userspace/engine/filter_macro_resolver.cpp @@ -20,23 +20,6 @@ limitations under the License. using namespace libsinsp::filter; -bool filter_macro_resolver::run(libsinsp::filter::ast::expr*& filter) -{ - m_unknown_macros.clear(); - m_resolved_macros.clear(); - m_errors.clear(); - - visitor v(m_errors, m_unknown_macros, m_resolved_macros, m_macros); - v.m_node_substitute = nullptr; - filter->accept(&v); - if (v.m_node_substitute) - { - delete filter; - filter = v.m_node_substitute.release(); - } - return !m_resolved_macros.empty(); -} - bool filter_macro_resolver::run(std::shared_ptr& filter) { m_unknown_macros.clear(); diff --git a/userspace/engine/filter_macro_resolver.h b/userspace/engine/filter_macro_resolver.h index b58b5489..605f6d01 100644 --- a/userspace/engine/filter_macro_resolver.h +++ b/userspace/engine/filter_macro_resolver.h @@ -40,11 +40,6 @@ class filter_macro_resolver class and is deleted automatically. \return true if at least one of the defined macros is resolved */ - bool run(libsinsp::filter::ast::expr*& filter); - - /*! - \brief Version of run() that works with shared pointers - */ bool run(std::shared_ptr& filter); /*! diff --git a/userspace/falco/falco_outputs.cpp b/userspace/falco/falco_outputs.cpp index 1650d8c3..2e9307d4 100644 --- a/userspace/falco/falco_outputs.cpp +++ b/userspace/falco/falco_outputs.cpp @@ -77,45 +77,41 @@ falco_outputs::~falco_outputs() #ifndef __EMSCRIPTEN__ this->stop_worker(); #endif - for(auto o : m_outputs) - { - delete o; - } } // This function is called only at initialization-time by the constructor void falco_outputs::add_output(const falco::outputs::config &oc) { - falco::outputs::abstract_output *oo; + std::unique_ptr oo; if(oc.name == "file") { - oo = new falco::outputs::output_file(); + oo = std::make_unique(); } #ifndef _WIN32 else if(oc.name == "program") { - oo = new falco::outputs::output_program(); + oo = std::make_unique(); } #endif else if(oc.name == "stdout") { - oo = new falco::outputs::output_stdout(); + oo = std::make_unique(); } #ifndef _WIN32 else if(oc.name == "syslog") { - oo = new falco::outputs::output_syslog(); + oo = std::make_unique(); } #endif #if !defined(_WIN32) && !defined(__EMSCRIPTEN__) && !defined(MINIMAL_BUILD) else if(oc.name == "http") { - oo = new falco::outputs::output_http(); + oo = std::make_unique(); } else if(oc.name == "grpc") { - oo = new falco::outputs::output_grpc(); + oo = std::make_unique(); } #endif else @@ -126,12 +122,11 @@ void falco_outputs::add_output(const falco::outputs::config &oc) std::string init_err; if (oo->init(oc, m_buffered, m_hostname, m_json_output, init_err)) { - m_outputs.push_back(oo); + m_outputs.push_back(std::move(oo)); } else { falco_logger::log(falco_logger::level::ERR, "Failed to init output: " + init_err); - delete(oo); } } @@ -323,12 +318,12 @@ void falco_outputs::worker() noexcept m_queue.pop(cmsg); #endif - for(auto o : m_outputs) + for(const auto& o : m_outputs) { wd.set_timeout(timeout, o->get_name()); try { - process_msg(o, cmsg); + process_msg(o.get(), cmsg); } catch(const std::exception &e) { diff --git a/userspace/falco/falco_outputs.h b/userspace/falco/falco_outputs.h index 17200757..5bfa7b13 100644 --- a/userspace/falco/falco_outputs.h +++ b/userspace/falco/falco_outputs.h @@ -93,7 +93,7 @@ public: private: std::unique_ptr m_formats; - std::vector m_outputs; + std::vector> m_outputs; bool m_buffered; bool m_json_output; diff --git a/userspace/falco/webserver.cpp b/userspace/falco/webserver.cpp index bf576e31..f33fcf93 100644 --- a/userspace/falco/webserver.cpp +++ b/userspace/falco/webserver.cpp @@ -43,13 +43,13 @@ void falco_webserver::start( // allocate and configure server if (ssl_enabled) { - m_server = new httplib::SSLServer( + m_server = std::make_unique( ssl_certificate.c_str(), ssl_certificate.c_str()); } else { - m_server = new httplib::Server(); + m_server = std::make_unique(); } // configure server @@ -71,8 +71,7 @@ void falco_webserver::start( // run server in a separate thread if (!m_server->is_valid()) { - delete m_server; - m_server = NULL; + m_server = nullptr; throw falco_exception("invalid webserver configuration"); } @@ -111,7 +110,7 @@ void falco_webserver::stop() { if (m_running) { - if (m_server != NULL) + if (m_server != nullptr) { m_server->stop(); } @@ -119,10 +118,9 @@ void falco_webserver::stop() { m_server_thread.join(); } - if (m_server != NULL) + if (m_server != nullptr) { - delete m_server; - m_server = NULL; + m_server = nullptr; } m_running = false; } diff --git a/userspace/falco/webserver.h b/userspace/falco/webserver.h index 7498b120..5f3af2bb 100644 --- a/userspace/falco/webserver.h +++ b/userspace/falco/webserver.h @@ -45,6 +45,6 @@ public: private: bool m_running = false; - httplib::Server* m_server = NULL; + std::unique_ptr m_server = nullptr; std::thread m_server_thread; };