From b84828604f8c9aa25acf41e90fdf5e9f4118e6bd Mon Sep 17 00:00:00 2001 From: Duke Date: Sun, 26 Mar 2023 10:08:44 -0700 Subject: [PATCH] Catch exceptions when parsing invalid json --- src/connection.cpp | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/connection.cpp b/src/connection.cpp index 6944503..5e8d7b3 100644 --- a/src/connection.cpp +++ b/src/connection.cpp @@ -384,16 +384,23 @@ void Executor::run() emit handleError(response); } } - auto parsed = json::parse( - response.toStdString().c_str(), - nullptr, - false - ); - if (parsed.is_discarded() || parsed.is_null()) { + try { + auto parsed = json::parse( + response.toStdString().c_str(), + nullptr, + false + ); + + if (parsed.is_discarded() || parsed.is_null()) { + emit handleError(response); + } else { + emit responseReady(parsed); + } + } catch (const std::exception& e) { + DEBUG("exception when parsing json: " << e.what() ); emit handleError(response); - } else { - emit responseReady(parsed); } + } void Callback::processRPCCallback(json resp)