diff --git a/include/opendht/value.h b/include/opendht/value.h index ff30d022dde5d5232216d548d154966dc7046254..efb084b4b272b79dc6c2c2bc6d089111b90a72d8 100644 --- a/include/opendht/value.h +++ b/include/opendht/value.h @@ -457,10 +457,10 @@ struct Value for (const auto& field : fields) switch (field) { case Value::Field::Id: - pk.pack(id); + pk.pack(static_cast<uint64_t>(id)); break; case Value::Field::ValueType: - pk.pack(type); + pk.pack(static_cast<uint64_t>(type)); break; case Value::Field::OwnerPk: if (owner) diff --git a/src/network_engine.cpp b/src/network_engine.cpp index ef3366c4ad1d861567e6d4b9a272fdc463aeefe3..760a88ed09e79fa4bf9bbb39278ae76258d16c6e 100644 --- a/src/network_engine.cpp +++ b/src/network_engine.cpp @@ -748,9 +748,8 @@ NetworkEngine::sendNodesValues(const sockaddr* sa, socklen_t salen, TransId tid, pk.pack_map(2); pk.pack(std::string("f")); pk.pack(fields); pk.pack(std::string("v")); pk.pack_array(st.size()*fields.size()); - for (const auto& v : st) { + for (const auto& v : st) v->msgpack_pack_fields(fields, pk); - } DHT_LOG.DEBUG("sending closest nodes (%d+%d nodes.), %u value headers containing %u fields", nodes.size(), nodes6.size(), st.size(), fields.size()); } @@ -1102,7 +1101,7 @@ ParsedMessage::msgpack_unpack(msgpack::object msg) for (size_t i = 0; i < rvalues->via.array.size; ++i) { try { auto v = std::make_shared<FieldValueIndex>(); - v->msgpack_unpack_fields(fields_, *rvalues, i*fields.size()); + v->msgpack_unpack_fields(fields_, *rvalues, i*fields_.size()); fields.emplace_back(std::move(v)); } catch (const std::exception& e) { } }