From f86f2a179ec3bb7fd0680b8509b0ebecb3dad91a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
Date: Wed, 18 May 2016 04:03:08 -0400
Subject: [PATCH] contrib: bump opendht

* bump OpenDHT to 0.6.1
* adapt to new APIs
* bump msgpack dependency

Tuleap: #709
Change-Id: I32bf62d085dc51ea49ee3594529e5d11cda0b4ce
---
 contrib/src/msgpack/rules.mak |  2 +-
 contrib/src/opendht/rules.mak |  4 ++--
 src/ringdht/ringaccount.cpp   | 32 +++++++++++++++-----------------
 src/ringdht/ringaccount.h     |  8 ++++----
 4 files changed, 22 insertions(+), 24 deletions(-)

diff --git a/contrib/src/msgpack/rules.mak b/contrib/src/msgpack/rules.mak
index d8d255f7fc..18ec422bbe 100644
--- a/contrib/src/msgpack/rules.mak
+++ b/contrib/src/msgpack/rules.mak
@@ -1,5 +1,5 @@
 # MSGPACK
-MSGPACK_VERSION := cpp-1.2.0
+MSGPACK_VERSION := 068041f05eb1b8ab2930a7679dfe89ba7d14cb79
 MSGPACK_URL := https://github.com/msgpack/msgpack-c/archive/$(MSGPACK_VERSION).tar.gz
 
 PKGS += msgpack
diff --git a/contrib/src/opendht/rules.mak b/contrib/src/opendht/rules.mak
index 66d9b8d722..c616fb8b3f 100644
--- a/contrib/src/opendht/rules.mak
+++ b/contrib/src/opendht/rules.mak
@@ -1,5 +1,5 @@
 # OPENDHT
-OPENDHT_VERSION := 13f8c13ac4ebb3b43474d91ca48b42a1019083f4
+OPENDHT_VERSION := 0.6.1
 OPENDHT_URL := https://github.com/savoirfairelinux/opendht/archive/$(OPENDHT_VERSION).tar.gz
 
 PKGS += opendht
@@ -8,7 +8,7 @@ PKGS_FOUND += opendht
 endif
 
 # Avoid building distro-provided dependencies in case opendht was built manually
-ifneq ($(call need_pkg,"msgpack >= 1.1"),)
+ifneq ($(call need_pkg,"msgpack >= 1.2"),)
 DEPS_opendht += msgpack
 endif
 ifneq ($(call need_pkg,"gnutls >= 3.3.0"),)
diff --git a/src/ringdht/ringaccount.cpp b/src/ringdht/ringaccount.cpp
index 8d16386da6..2f86693f55 100644
--- a/src/ringdht/ringaccount.cpp
+++ b/src/ringdht/ringaccount.cpp
@@ -57,8 +57,6 @@
 
 #include "security/certstore.h"
 
-#include <opendht/securedht.h>
-
 #include <yaml-cpp/yaml.h>
 
 #include <algorithm>
@@ -773,9 +771,9 @@ RingAccount::doRegister()
 }
 
 static constexpr const char*
-dhtStatusStr(dht::Dht::Status status) {
-    return status == dht::Dht::Status::Connected  ? "connected"  : (
-           status == dht::Dht::Status::Connecting ? "connecting" :
+dhtStatusStr(dht::NodeStatus status) {
+    return status == dht::NodeStatus::Connected  ? "connected"  : (
+           status == dht::NodeStatus::Connecting ? "connecting" :
                                                     "disconnected");
 }
 
@@ -791,17 +789,17 @@ RingAccount::doRegister_()
         }
         auto identity = loadIdentity();
 
-        dht_.setOnStatusChanged([this](dht::Dht::Status s4, dht::Dht::Status s6) {
+        dht_.setOnStatusChanged([this](dht::NodeStatus s4, dht::NodeStatus s6) {
                 RING_WARN("Dht status : IPv4 %s; IPv6 %s", dhtStatusStr(s4), dhtStatusStr(s6));
                 RegistrationState state;
                 switch (std::max(s4, s6)) {
-                    case dht::Dht::Status::Connecting:
+                    case dht::NodeStatus::Connecting:
                         state = RegistrationState::TRYING;
                         break;
-                    case dht::Dht::Status::Connected:
+                    case dht::NodeStatus::Connected:
                         state = RegistrationState::REGISTERED;
                         break;
-                    case dht::Dht::Status::Disconnected:
+                    case dht::NodeStatus::Disconnected:
                         state = RegistrationState::UNREGISTERED;
                         break;
                     default:
@@ -1156,7 +1154,7 @@ RingAccount::saveTreatedMessages() const
 }
 
 void
-RingAccount::saveNodes(const std::vector<dht::Dht::NodeExport>& nodes) const
+RingAccount::saveNodes(const std::vector<dht::NodeExport>& nodes) const
 {
     if (nodes.empty())
         return;
@@ -1174,7 +1172,7 @@ RingAccount::saveNodes(const std::vector<dht::Dht::NodeExport>& nodes) const
 }
 
 void
-RingAccount::saveValues(const std::vector<dht::Dht::ValuesExport>& values) const
+RingAccount::saveValues(const std::vector<dht::ValuesExport>& values) const
 {
     fileutils::check_dir(dataPath_.c_str());
     for (const auto& v : values) {
@@ -1184,10 +1182,10 @@ RingAccount::saveValues(const std::vector<dht::Dht::ValuesExport>& values) const
     }
 }
 
-std::vector<dht::Dht::NodeExport>
+std::vector<dht::NodeExport>
 RingAccount::loadNodes() const
 {
-    std::vector<dht::Dht::NodeExport> nodes;
+    std::vector<dht::NodeExport> nodes;
     std::string nodesPath = cachePath_+DIR_SEPARATOR_STR "nodes";
     {
         std::ifstream file(nodesPath);
@@ -1202,24 +1200,24 @@ RingAccount::loadNodes() const
             std::string id, ipstr;
             if (!(iss >> id >> ipstr)) { break; }
             IpAddr ip {ipstr};
-            dht::Dht::NodeExport e {dht::InfoHash(id), ip, ip.getLength()};
+            dht::NodeExport e {dht::InfoHash(id), ip, ip.getLength()};
             nodes.push_back(e);
         }
     }
     return nodes;
 }
 
-std::vector<dht::Dht::ValuesExport>
+std::vector<dht::ValuesExport>
 RingAccount::loadValues() const
 {
-    std::vector<dht::Dht::ValuesExport> values;
+    std::vector<dht::ValuesExport> values;
     const auto dircontent(fileutils::readDirectory(dataPath_));
     for (const auto& fname : dircontent) {
         const auto file = dataPath_+DIR_SEPARATOR_STR+fname;
         try {
             std::ifstream ifs(file, std::ifstream::in | std::ifstream::binary);
             std::istreambuf_iterator<char> begin(ifs), end;
-            values.emplace_back(dht::Dht::ValuesExport{dht::InfoHash(fname), std::vector<uint8_t>{begin, end}});
+            values.emplace_back(dht::ValuesExport{dht::InfoHash(fname), std::vector<uint8_t>{begin, end}});
         } catch (const std::exception& e) {
             RING_ERR("Error reading value: %s", e.what());
         }
diff --git a/src/ringdht/ringaccount.h b/src/ringdht/ringaccount.h
index 6fda37811e..dd16a51e61 100644
--- a/src/ringdht/ringaccount.h
+++ b/src/ringdht/ringaccount.h
@@ -344,8 +344,8 @@ class RingAccount : public SIPAccountBase {
         void checkIdentityPath();
 
         void saveIdentity(const dht::crypto::Identity id, const std::string& path) const;
-        void saveNodes(const std::vector<dht::Dht::NodeExport>&) const;
-        void saveValues(const std::vector<dht::Dht::ValuesExport>&) const;
+        void saveNodes(const std::vector<dht::NodeExport>&) const;
+        void saveValues(const std::vector<dht::ValuesExport>&) const;
 
         void loadTreatedCalls();
         void saveTreatedCalls() const;
@@ -361,8 +361,8 @@ class RingAccount : public SIPAccountBase {
          * Otherwise, generate a new identity and returns it.
          */
         dht::crypto::Identity loadIdentity();
-        std::vector<dht::Dht::NodeExport> loadNodes() const;
-        std::vector<dht::Dht::ValuesExport> loadValues() const;
+        std::vector<dht::NodeExport> loadNodes() const;
+        std::vector<dht::ValuesExport> loadValues() const;
 
         bool dhtPublicInCalls_ {true};
 
-- 
GitLab