Unverified Commit 774d4cc7 authored by Stan Kladko's avatar Stan Kladko Committed by GitHub

Merge pull request #373 from skalenetwork/bug/SKALE-4939-fix-crash-on-zmq-invalid-message

Bug/skale 4939 fix crash on zmq invalid message
parents 2d23d246 e8dd9e98
...@@ -219,7 +219,7 @@ pair <string, shared_ptr<zmq::message_t>> ZMQServer::receiveMessage() { ...@@ -219,7 +219,7 @@ pair <string, shared_ptr<zmq::message_t>> ZMQServer::receiveMessage() {
if (!identity->more()) { if (!identity->more()) {
checkForExit(); checkForExit();
// something terrible happened // something terrible happened
spdlog::error("Fatal error: zmq_msg_more(identity) returned false. Existing."); spdlog::error("Fatal error: zmq_msg_more(identity) returned false. Exiting.");
exit(-12); exit(-12);
} }
...@@ -234,8 +234,6 @@ pair <string, shared_ptr<zmq::message_t>> ZMQServer::receiveMessage() { ...@@ -234,8 +234,6 @@ pair <string, shared_ptr<zmq::message_t>> ZMQServer::receiveMessage() {
auto result = string((char *) reqMsg->data(), reqMsg->size()); auto result = string((char *) reqMsg->data(), reqMsg->size());
CHECK_STATE(result.front() == '{')
CHECK_STATE(result.back() == '}')
return {result, identity}; return {result, identity};
} }
...@@ -276,7 +274,7 @@ void ZMQServer::doOneServerLoop() { ...@@ -276,7 +274,7 @@ void ZMQServer::doOneServerLoop() {
Json::Value result; Json::Value result;
result["status"] = ZMQ_SERVER_ERROR; result["status"] = ZMQ_SERVER_ERROR;
shared_ptr <zmq::message_t> identity = nullptr; shared_ptr <zmq::message_t> identity = make_shared<zmq::message_t>();
string msgStr; string msgStr;
try { try {
...@@ -313,7 +311,7 @@ void ZMQServer::doOneServerLoop() { ...@@ -313,7 +311,7 @@ void ZMQServer::doOneServerLoop() {
incomingQueue.at(index).enqueue(element); incomingQueue.at(index).enqueue(element);
} }
} catch (ExitRequestedException) { } catch (ExitRequestedException&) {
throw; throw;
} catch (exception &e) { } catch (exception &e) {
checkForExit(); checkForExit();
...@@ -400,4 +398,4 @@ void ZMQServer::workerThreadMessageProcessLoop(ZMQServer *_agent, uint64_t _thre ...@@ -400,4 +398,4 @@ void ZMQServer::workerThreadMessageProcessLoop(ZMQServer *_agent, uint64_t _thre
} }
spdlog::info("Exit requested. Exiting worker thread:" + to_string(_threadNumber)); spdlog::info("Exit requested. Exiting worker thread:" + to_string(_threadNumber));
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment