diff --git a/include/opendht/network_engine.h b/include/opendht/network_engine.h
index ec4f7e74110fcf8e6713590787b8ff6f28b6f914..ace4b6d01fc865d0671057874672856ab6661591 100644
--- a/include/opendht/network_engine.h
+++ b/include/opendht/network_engine.h
@@ -563,7 +563,7 @@ private:
             socklen_t salen,
             TransId tid,
             uint16_t code,
-            const char *message,
+            const std::string& message,
             bool include_id=false);
 
     RequestAnswer deserializeNodesValues(ParsedMessage& msg);
diff --git a/src/network_engine.cpp b/src/network_engine.cpp
index 4dc267b866abc91c8cf9d8c783b3260ef033c056..09b0ac0fbc8e4f0bcb6b32292c56a164a5c8035d 100644
--- a/src/network_engine.cpp
+++ b/src/network_engine.cpp
@@ -708,7 +708,7 @@ NetworkEngine::sendError(const sockaddr* sa,
         socklen_t salen,
         TransId tid,
         uint16_t code,
-        const char *message,
+        const std::string& message,
         bool include_id) {
     msgpack::sbuffer buffer;
     msgpack::packer<msgpack::sbuffer> pk(&buffer);
@@ -716,8 +716,7 @@ NetworkEngine::sendError(const sockaddr* sa,
 
     pk.pack(std::string("e")); pk.pack_array(2);
       pk.pack(code);
-      pk.pack_str(strlen(message));
-      pk.pack_str_body(message, strlen(message));
+      pk.pack(message);
 
     if (include_id) {
         pk.pack(std::string("r")); pk.pack_map(1);