diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/openbmc_dbus_rest.hpp | 34 |
1 files changed, 25 insertions, 9 deletions
diff --git a/include/openbmc_dbus_rest.hpp b/include/openbmc_dbus_rest.hpp index cfbe4cb109..0aa23e22cc 100644 --- a/include/openbmc_dbus_rest.hpp +++ b/include/openbmc_dbus_rest.hpp @@ -415,13 +415,7 @@ struct InProgressActionData { if (!methodPassed) { - if (methodFailed) - { - setErrorResponse(res, - boost::beast::http::status::bad_request, - "Method call failed", methodFailedMsg); - } - else + if (!methodFailed) { setErrorResponse(res, boost::beast::http::status::not_found, methodNotFoundDesc, notFoundMsg); @@ -1388,6 +1382,25 @@ void findActionOnInterface(std::shared_ptr<InProgressActionData> transaction, if (ec) { transaction->methodFailed = true; + const sd_bus_error *e = m.get_error(); + + if (e) + { + setErrorResponse( + transaction->res, + boost::beast::http::status:: + bad_request, + e->name, e->message); + } + else + { + setErrorResponse( + transaction->res, + boost::beast::http::status:: + bad_request, + "Method call failed", + methodFailedMsg); + } return; } else @@ -1873,8 +1886,11 @@ void handlePut(const crow::Request &req, crow::Response &res, boost::beast::http:: status:: forbidden, - e->name, - e->message); + (e) ? e->name + : ec.category() + .name(), + (e) ? e->message + : ec.message()); } else { |