diff --git a/CMakeLists.txt b/CMakeLists.txt index 40cc1570b78a7905b2a5ddbc2ddb78a5ee91978a..8bfdc475a7a1de720773c5fcf62b32bacb683385 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,6 +17,7 @@ option (OPENDHT_TOOLS "Build DHT tools" ON) option (OPENDHT_DEBUG "Build with debug flags" OFF) set (CMAKE_CXX_FLAGS "-pthread -std=c++11 -Wno-return-type -Wall -Wextra -Wnon-virtual-dtor ${CMAKE_CXX_FLAGS}") +set (CMAKE_CXX_FLAGS "-DMSGPACK_DISABLE_LEGACY_NIL -DMSGPACK_DISABLE_LEGACY_CONVERT ${CMAKE_CXX_FLAGS}") find_package (GnuTLS 3.1 REQUIRED) find_package (Msgpack 1.2 REQUIRED) diff --git a/configure.ac b/configure.ac index c9be035e0e2d52942ebd6d5f9cab09f96695aa06..1f1674622764f06d7908c4564e952d2a7c09acff 100644 --- a/configure.ac +++ b/configure.ac @@ -78,6 +78,7 @@ PKG_PROG_PKG_CONFIG() PKG_CHECK_MODULES([nettle], [nettle >= 2.4]) PKG_CHECK_MODULES([GNUTLS], [gnutls >= 3.1]) PKG_CHECK_MODULES([msgpack], [msgpack >= 1.2]) +CXXFLAGS="${CXXFLAGS} -DMSGPACK_DISABLE_LEGACY_NIL -DMSGPACK_DISABLE_LEGACY_CONVERT" AC_ARG_ENABLE([tools], AS_HELP_STRING([--disable-tools],[Disable tools (CLI DHT node)]),,build_tools=yes) AM_CONDITIONAL(ENABLE_TOOLS, test x$build_tools == xyes) diff --git a/include/opendht/value.h b/include/opendht/value.h index 5211450004edd00c5593d74aa902d1e2b9fcab66..774e03581429ab2741e5d190bed644ae40aa1452 100644 --- a/include/opendht/value.h +++ b/include/opendht/value.h @@ -197,7 +197,7 @@ struct Value virtual void unpackValue(const Value& v) { auto msg = msgpack::unpack((const char*)v.data.data(), v.data.size()); - msg.get().convert(static_cast<Derived*>(this)); + msg.get().convert(*static_cast<Derived*>(this)); } virtual Value packValue() const { diff --git a/src/dht.cpp b/src/dht.cpp index 9a9271f5f273458a8b2cb40532d7359c68905c41..35a82ade082ebd0342e129e104ae4a15a0a7ff69 100644 --- a/src/dht.cpp +++ b/src/dht.cpp @@ -2846,7 +2846,7 @@ Dht::importValues(const std::vector<ValuesExport>& import) try { msgpack::unpacked msg; - msgpack::unpack(&msg, (const char*)h.second.data(), h.second.size()); + msgpack::unpack(msg, (const char*)h.second.data(), h.second.size()); auto valarr = msg.get(); if (valarr.type != msgpack::type::ARRAY) throw msgpack::type_error();