mirror of
https://codeberg.org/wownero/wownero-lws
synced 2026-01-10 15:45:15 -08:00
Check for JSON-RPC errors, and add better logging for it
This commit is contained in:
@@ -37,6 +37,7 @@
|
||||
#include "misc_log_ex.h" // monero/contrib/epee/include
|
||||
#include "net/http_client.h" // monero/contrib/epee/include
|
||||
#include "net/zmq.h" // monero/src
|
||||
#include "serialization/json_object.h" // monero/src
|
||||
|
||||
namespace lws
|
||||
{
|
||||
@@ -160,6 +161,32 @@ namespace rpc
|
||||
};
|
||||
} // detail
|
||||
|
||||
expect<void> client::get_response(cryptonote::rpc::Message& response, const std::chrono::seconds timeout, const source_location loc)
|
||||
{
|
||||
expect<std::string> message = get_message(timeout);
|
||||
if (!message)
|
||||
return message.error();
|
||||
|
||||
try
|
||||
{
|
||||
cryptonote::rpc::FullMessage fm{std::move(*message)};
|
||||
const cryptonote::rpc::error json_error = fm.getError();
|
||||
if (!json_error.use)
|
||||
{
|
||||
response.fromJson(fm.getMessage());
|
||||
return success();
|
||||
}
|
||||
|
||||
MERROR("Server returned RPC error: " << json_error.message << " with code " << json_error.code << " called from " << loc);
|
||||
}
|
||||
catch (const cryptonote::json::JSON_ERROR& error)
|
||||
{
|
||||
MERROR("Failed to parse json response: " << error.what() << " called from " << loc);
|
||||
}
|
||||
|
||||
return {lws::error::bad_daemon_response};
|
||||
}
|
||||
|
||||
expect<std::string> client::get_message(std::chrono::seconds timeout)
|
||||
{
|
||||
MONERO_PRECOND(ctx != nullptr);
|
||||
|
||||
Reference in New Issue
Block a user