diff options
author | Evgeny Zinoviev <me@ch1p.io> | 2021-05-23 02:56:37 +0300 |
---|---|---|
committer | Evgeny Zinoviev <me@ch1p.io> | 2021-05-23 22:59:46 +0300 |
commit | 5758e0315f9d27007575293760db6d389c2f4162 (patch) | |
tree | 3594078e4694e12c02f56f927be0d674159112bb /src/server/connection.cc | |
parent | f0ba39a28bb7a42b0dd9755a6d759702a7e39258 (diff) |
device: separate high-priority thread for interacting with hwsched
Diffstat (limited to 'src/server/connection.cc')
-rw-r--r-- | src/server/connection.cc | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/server/connection.cc b/src/server/connection.cc index 499b5a0..efd6802 100644 --- a/src/server/connection.cc +++ b/src/server/connection.cc @@ -5,14 +5,12 @@ #include <ios> #include <arpa/inet.h> #include <cerrno> +#include <nlohmann/json.hpp> #include "connection.h" #include "../p18/commands.h" -#include "../p18/response.h" #include "../logging.h" #include "../common.h" -#include "hexdump/hexdump.h" -#include "signal.h" #define CHECK_ARGUMENTS_LENGTH(__size__) \ if (arguments.size() != (__size__)) { \ @@ -239,8 +237,13 @@ Response Connection::processRequest(char* buf) { resp.type = ResponseType::Error; - auto err = p18::response_type::ErrorResponse(e.what()); - resp.buf << *(err.format(options_.format)); + try { + auto err = p18::response_type::ErrorResponse(e.what()); + resp.buf << *(err.format(options_.format)); + } catch (nlohmann::detail::exception& e) { + myerr << e.what(); + resp.buf << "error while formatting json: " << e.what(); + } } return resp; |