diff --git a/lib/compat/externalcommandlistener.cpp b/lib/compat/externalcommandlistener.cpp index 63b610ef2..3c12a6d65 100644 --- a/lib/compat/externalcommandlistener.cpp +++ b/lib/compat/externalcommandlistener.cpp @@ -139,7 +139,7 @@ void ExternalCommandListener::CommandPipeThread(const String& commandPath) Log(LogInformation, "ExternalCommandListener") << "Executing external command: " << command; - ExternalCommandProcessor::Execute(command); + ExternalCommandProcessor::Execute(this, command); } catch (const std::exception& ex) { Log(LogWarning, "ExternalCommandListener") << "External command failed: " << DiagnosticInformation(ex, false); diff --git a/lib/icinga/externalcommandprocessor.cpp b/lib/icinga/externalcommandprocessor.cpp index 2f240e2fd..d336b9a01 100644 --- a/lib/icinga/externalcommandprocessor.cpp +++ b/lib/icinga/externalcommandprocessor.cpp @@ -27,7 +27,7 @@ using namespace icinga; boost::signals2::signal&)> ExternalCommandProcessor::OnNewExternalCommand; -void ExternalCommandProcessor::Execute(const String& line) +void ExternalCommandProcessor::Execute(const CheckResultProducer::Ptr& producer, const String& line) { if (line.IsEmpty()) return; @@ -54,10 +54,10 @@ void ExternalCommandProcessor::Execute(const String& line) BOOST_THROW_EXCEPTION(std::invalid_argument("Missing arguments in command: " + line)); std::vector argvExtra(argv.begin() + 1, argv.end()); - Execute(ts, argv[0], argvExtra); + Execute(producer, ts, argv[0], argvExtra); } -void ExternalCommandProcessor::Execute(double time, const String& command, const std::vector& arguments) +void ExternalCommandProcessor::Execute(const CheckResultProducer::Ptr& producer, double time, const String& command, const std::vector& arguments) { ExternalCommandInfo eci; @@ -102,7 +102,7 @@ void ExternalCommandProcessor::Execute(double time, const String& command, const OnNewExternalCommand(time, command, realArguments); - eci.Callback(time, realArguments); + eci.Callback(producer, time, realArguments); } void ExternalCommandProcessor::RegisterCommand(const String& command, const ExternalCommandCallback& callback, size_t minArgs, size_t maxArgs) diff --git a/lib/icinga/externalcommandprocessor.hpp b/lib/icinga/externalcommandprocessor.hpp index c6b2f7b7e..b54484952 100644 --- a/lib/icinga/externalcommandprocessor.hpp +++ b/lib/icinga/externalcommandprocessor.hpp @@ -25,8 +25,8 @@ struct ExternalCommandInfo class ExternalCommandProcessor { public: - static void Execute(const String& line); - static void Execute(double time, const String& command, const std::vector& arguments); + static void Execute(const CheckResultProducer::Ptr& producer, const String& line); + static void Execute(const CheckResultProducer::Ptr& producer, double time, const String& command, const std::vector& arguments); static boost::signals2::signal&)> OnNewExternalCommand;