From 9900d3cf154dd136b85da79547ea2954186b9a8c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
Date: Mon, 11 May 2020 11:55:51 -0400
Subject: [PATCH] proxyserver: generate id before put

---
 include/opendht/dht_proxy_server.h | 1 +
 src/dht_proxy_server.cpp           | 2 ++
 2 files changed, 3 insertions(+)

diff --git a/include/opendht/dht_proxy_server.h b/include/opendht/dht_proxy_server.h
index 346a7c84..a3720d1d 100644
--- a/include/opendht/dht_proxy_server.h
+++ b/include/opendht/dht_proxy_server.h
@@ -316,6 +316,7 @@ private:
     std::shared_ptr<DhtRunner> dht_;
     Json::StreamWriterBuilder jsonBuilder_;
     Json::CharReaderBuilder jsonReaderBuilder_;
+    std::mt19937_64 rd {crypto::getSeededRandomEngine<std::mt19937_64>()};
 
     // http server
     std::thread serverThread_;
diff --git a/src/dht_proxy_server.cpp b/src/dht_proxy_server.cpp
index 4c7dbc48..84957cff 100644
--- a/src/dht_proxy_server.cpp
+++ b/src/dht_proxy_server.cpp
@@ -964,6 +964,8 @@ DhtProxyServer::put(restinio::request_handle_t request,
                             return response.done();
                         }
                     }
+                    if (value->id == Value::INVALID_ID)
+                        value->id = std::uniform_int_distribution<Value::Id>{1}(rd);
                 }
 
                 auto vid = value->id;
-- 
GitLab