diff --git a/xplat/Sonar/SonarClient.cpp b/xplat/Sonar/SonarClient.cpp index 463bc7c75..63bf8dd5f 100644 --- a/xplat/Sonar/SonarClient.cpp +++ b/xplat/Sonar/SonarClient.cpp @@ -15,6 +15,9 @@ #include "ConnectionContextStore.h" #include "Log.h" #include +#include +#include +#include #if FB_SONARKIT_ENABLED @@ -99,8 +102,10 @@ void SonarClient::disconnect(std::shared_ptr plugin) { } void SonarClient::refreshPlugins() { - dynamic message = dynamic::object("method", "refreshPlugins"); - socket_->sendMessage(message); + performAndReportError([this]() { + dynamic message = dynamic::object("method", "refreshPlugins"); + socket_->sendMessage(message); + }); } void SonarClient::onConnected() { @@ -197,11 +202,13 @@ void SonarClient::performAndReportError(const std::function& func) { try { func(); } catch (std::exception& e) { - if (connected_) { dynamic message = dynamic::object( - "error", - dynamic::object("message", e.what())("stacktrace", "")); + "error", + dynamic::object("message", e.what())("stacktrace", "")); + if (connected_) { socket_->sendMessage(message); + } else { + log("SonarError : " + std::string(e.what())); } } }