diff --git a/src/network_engine.cpp b/src/network_engine.cpp
index d36a01e72dbb9836223d44e56b356e300f1aacfc..fd6b8c9255c80761b9ed41dc35df30621b89bfe1 100644
--- a/src/network_engine.cpp
+++ b/src/network_engine.cpp
@@ -526,8 +526,13 @@ NetworkEngine::process(std::unique_ptr<ParsedMessage>&& msg, const SockAddr& fro
             throw DhtProtocolException {DhtProtocolException::UNKNOWN_TID, "Can't find socket", msg->id};
         node->received(now, {});
         onNewNode(node, 2);
-        deserializeNodes(*msg, from);
-        rsocket->on_receive(node, std::move(*msg));
+        try {
+            deserializeNodes(*msg, from);
+            rsocket->on_receive(node, std::move(*msg));
+        } catch (const DhtProtocolException& e) {
+            if (logger_)
+                logger_->w("Can't deserialize nodes %s", e.what());
+        }
     }
     else if (msg->type == MessageType::Error or msg->type == MessageType::Reply) {
         auto rsocket = node->getSocket(msg->tid);
@@ -590,13 +595,22 @@ NetworkEngine::process(std::unique_ptr<ParsedMessage>&& msg, const SockAddr& fro
                     r.node->authSuccess();
                 }
                 r.reply_time = scheduler.time();
-
-                deserializeNodes(*msg, from);
-                r.setDone(std::move(*msg));
+                try {
+                    deserializeNodes(*msg, from);
+                    r.setDone(std::move(*msg));
+                } catch (const DhtProtocolException& e) {
+                    if (logger_)
+                        logger_->w("Can't deserialize nodes %s", e.what());
+                }
                 break;
             } else { /* request socket data */
-                deserializeNodes(*msg, from);
-                rsocket->on_receive(node, std::move(*msg));
+                try {
+                    deserializeNodes(*msg, from);
+                    rsocket->on_receive(node, std::move(*msg));
+                } catch (const DhtProtocolException& e) {
+                    if (logger_)
+                        logger_->w("Can't deserialize nodes %s", e.what());
+                }
             }
             break;
         default: