summaryrefslogtreecommitdiff
path: root/src/server/connection.cc
diff options
context:
space:
mode:
authorEvgeny Zinoviev <me@ch1p.io>2021-05-23 02:56:37 +0300
committerEvgeny Zinoviev <me@ch1p.io>2021-05-23 22:59:46 +0300
commit5758e0315f9d27007575293760db6d389c2f4162 (patch)
tree3594078e4694e12c02f56f927be0d674159112bb /src/server/connection.cc
parentf0ba39a28bb7a42b0dd9755a6d759702a7e39258 (diff)
device: separate high-priority thread for interacting with hwsched
Diffstat (limited to 'src/server/connection.cc')
-rw-r--r--src/server/connection.cc13
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;