diff --git a/src/jamidht/jamiaccount.cpp b/src/jamidht/jamiaccount.cpp
index daff87c09446254012f6b10cb397dc2746e08426..5938fb4ed61c439484fb25d19adc6af85040600e 100644
--- a/src/jamidht/jamiaccount.cpp
+++ b/src/jamidht/jamiaccount.cpp
@@ -1956,7 +1956,7 @@ JamiAccount::doRegister_()
                 deviceId, [this, &accept](const std::shared_ptr<dht::crypto::Certificate>& cert) {
                     dht::InfoHash peer_account_id;
                     auto res = accountManager_->onPeerCertificate(cert,
-                                                                  dhtPublicInCalls_,
+                                                                  this->config().dhtPublicInCalls,
                                                                   peer_account_id);
                     JAMI_LOG("{} ICE request from {}",
                         res ? "Accepting" : "Discarding", peer_account_id);
@@ -2086,7 +2086,7 @@ JamiAccount::doRegister_()
                 return true;
             accountManager_
                 ->onPeerMessage(*v.owner,
-                                dhtPublicInCalls_,
+                                this->config().dhtPublicInCalls,
                                 [this,
                                  v,
                                  inboxDeviceKey,
diff --git a/src/jamidht/jamiaccount.h b/src/jamidht/jamiaccount.h
index c145ba47d2fe6adbd93a382c96c72c7b4f2e4d21..78ec1d5bcec2514117924af98a6a275aceda9693 100644
--- a/src/jamidht/jamiaccount.h
+++ b/src/jamidht/jamiaccount.h
@@ -729,7 +729,6 @@ private:
     std::map<dht::InfoHash, BuddyInfo> trackedBuddies_;
 
     mutable std::mutex dhtValuesMtx_;
-    bool dhtPublicInCalls_ {true};
 
     std::atomic_int syncCnt_ {0};
     /**
diff --git a/src/jamidht/jamiaccount_config.cpp b/src/jamidht/jamiaccount_config.cpp
index d1b0422e041c5c038182086f842143de4a217c73..332a209a8d4ad34187bfefb95b846a9e16247302 100644
--- a/src/jamidht/jamiaccount_config.cpp
+++ b/src/jamidht/jamiaccount_config.cpp
@@ -56,6 +56,7 @@ JamiAccountConfig::serialize(YAML::Emitter& out) const
     SERIALIZE_CONFIG(libjami::Account::ConfProperties::DEVICE_NAME, deviceName);
     SERIALIZE_CONFIG(libjami::Account::ConfProperties::MANAGER_URI, managerUri);
     SERIALIZE_CONFIG(libjami::Account::ConfProperties::MANAGER_USERNAME, managerUsername);
+    SERIALIZE_CONFIG(libjami::Account::ConfProperties::DHT::PUBLIC_IN_CALLS, dhtPublicInCalls);
 
     out << YAML::Key << Conf::RING_ACCOUNT_RECEIPT << YAML::Value << receipt;
     if (receiptSignature.size() > 0)
@@ -100,6 +101,7 @@ JamiAccountConfig::unserialize(const YAML::Node& node)
     parseValueOptional(node, libjami::Account::ConfProperties::DEVICE_NAME, deviceName);
     parseValueOptional(node, libjami::Account::ConfProperties::MANAGER_URI, managerUri);
     parseValueOptional(node, libjami::Account::ConfProperties::MANAGER_USERNAME, managerUsername);
+    parseValueOptional(node, libjami::Account::ConfProperties::DHT::PUBLIC_IN_CALLS, dhtPublicInCalls);
 
     parsePathOptional(node, libjami::Account::ConfProperties::ARCHIVE_PATH, archivePath, path);
     parseValueOptional(node,
@@ -159,6 +161,7 @@ JamiAccountConfig::toMap() const
     a.emplace(libjami::Account::ConfProperties::DHT_PROXY_LIST_URL, proxyListUrl);
     a.emplace(libjami::Account::ConfProperties::MANAGER_URI, managerUri);
     a.emplace(libjami::Account::ConfProperties::MANAGER_USERNAME, managerUsername);
+    a.emplace(libjami::Account::ConfProperties::DHT::PUBLIC_IN_CALLS, dhtPublicInCalls ? TRUE_STR : FALSE_STR);
 #if HAVE_RINGNS
     a.emplace(libjami::Account::ConfProperties::RingNS::URI, nameServer);
 #endif
@@ -197,6 +200,7 @@ JamiAccountConfig::fromMap(const std::map<std::string, std::string>& details)
 
     parseString(details, libjami::Account::ConfProperties::MANAGER_URI, managerUri);
     parseString(details, libjami::Account::ConfProperties::MANAGER_USERNAME, managerUsername);
+    parseBool(details, libjami::Account::ConfProperties::DHT::PUBLIC_IN_CALLS, dhtPublicInCalls);
     // parseString(details, libjami::Account::ConfProperties::USERNAME, username);
 
     parseString(details, libjami::Account::ConfProperties::ARCHIVE_PASSWORD, archive_password);
diff --git a/src/jamidht/jamiaccount_config.h b/src/jamidht/jamiaccount_config.h
index 565d14f8b161db056f60a0039c26ec17d4ec7764..ce84ae430c603ee69fd1ef10429545285178af17 100644
--- a/src/jamidht/jamiaccount_config.h
+++ b/src/jamidht/jamiaccount_config.h
@@ -75,6 +75,8 @@ struct JamiAccountConfig : public SipAccountBaseConfig {
 
     std::string receipt {};
     std::vector<uint8_t> receiptSignature {};
+
+    bool dhtPublicInCalls {true};
 };
 
 }
diff --git a/test/unitTest/call/call.cpp b/test/unitTest/call/call.cpp
index b2b42906e78f650bf47adf45dd0795394faf566f..242d224a7a1a5b0e5bee72eaa8d36025be3958b8 100644
--- a/test/unitTest/call/call.cpp
+++ b/test/unitTest/call/call.cpp
@@ -73,6 +73,7 @@ private:
     void testSocketInfos();
     void testInvalidTurn();
     void testTransfer();
+    void testDhtPublicInCall();
 
     CPPUNIT_TEST_SUITE(CallTest);
     CPPUNIT_TEST(testCall);
@@ -83,6 +84,7 @@ private:
     CPPUNIT_TEST(testSocketInfos);
     CPPUNIT_TEST(testInvalidTurn);
     CPPUNIT_TEST(testTransfer);
+    CPPUNIT_TEST(testDhtPublicInCall);
     CPPUNIT_TEST_SUITE_END();
 };
 
@@ -566,6 +568,50 @@ CallTest::testTransfer()
     Manager::instance().hangupCall(carlaId, carlaCallId);
     CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&] { return aliceCallStopped.load(); }));
 }
+
+void
+CallTest::testDhtPublicInCall()
+{
+    auto aliceAccount = Manager::instance().getAccount<JamiAccount>(aliceId);
+    auto bobAccount = Manager::instance().getAccount<JamiAccount>(bobId);
+    auto bobUri = bobAccount->getUsername();
+    auto aliceUri = aliceAccount->getUsername();
+
+    std::mutex mtx;
+    std::unique_lock<std::mutex> lk {mtx};
+    std::condition_variable cv;
+    std::map<std::string, std::shared_ptr<libjami::CallbackWrapperBase>> confHandlers;
+    std::atomic_bool callReceived {false};
+    std::atomic<int> callStopped {0};
+    // Watch signals
+    confHandlers.insert(libjami::exportable_callback<libjami::CallSignal::IncomingCallWithMedia>(
+        [&](const std::string&,
+            const std::string&,
+            const std::string&,
+            const std::vector<std::map<std::string, std::string>>&) {
+            callReceived = true;
+            cv.notify_one();
+        }));
+    confHandlers.insert(libjami::exportable_callback<libjami::CallSignal::StateChange>(
+        [&](const std::string&, const std::string&, const std::string& state, signed) {
+            if (state == "OVER") {
+                callStopped += 1;
+                if (callStopped == 2)
+                    cv.notify_one();
+            }
+        }));
+    libjami::registerSignalHandlers(confHandlers);
+
+    std::map<std::string, std::string> details;
+    details["DHT.PublicInCalls"] = "FALSE";
+    libjami::setAccountDetails(bobId, details);
+
+    JAMI_INFO("Start call between alice and Bob");
+    auto call = libjami::placeCallWithMedia(aliceId, bobUri, {});
+
+    CPPUNIT_ASSERT(!cv.wait_for(lk, 15s, [&] { return callReceived.load(); }));
+}
+
 } // namespace test
 } // namespace jami