From 73c20f633b29f8a059eb2586c8af37b07e66a3fa Mon Sep 17 00:00:00 2001
From: Guillaume Roguez <guillaume.roguez@savoirfairelinux.com>
Date: Mon, 17 Jul 2017 11:36:40 -0400
Subject: [PATCH] header dependency cleanup

Remove high dependencies on OpenDHT includes inside Ring internal
header files.
This reduces compile time by not recompiling the whole project
for any changes into opendht.

Change-Id: Iba852e0b889e67ee12b3a9747e6d04de23572c2e
Reviewed-by: Olivier Soldano <olivier.soldano@savoirfairelinux.com>
---
 src/ringdht/ringaccount.h    | 1 +
 src/security/certstore.h     | 4 ++--
 src/security/tls_session.cpp | 3 +--
 src/security/tlsvalidator.h  | 9 ++++++---
 src/sip/pres_sub_client.cpp  | 1 +
 src/sip/sipaccount.cpp       | 2 ++
 src/sip/sipaccountbase.h     | 8 ++++++--
 src/sip/sipcall.cpp          | 2 ++
 src/sip/sippresence.cpp      | 2 ++
 src/sip/siptransport.cpp     | 2 ++
 src/sip/siptransport.h       | 7 +++++--
 11 files changed, 30 insertions(+), 11 deletions(-)

diff --git a/src/ringdht/ringaccount.h b/src/ringdht/ringaccount.h
index 27b65e1679..7782ef9b2c 100644
--- a/src/ringdht/ringaccount.h
+++ b/src/ringdht/ringaccount.h
@@ -32,6 +32,7 @@
 #include "noncopyable.h"
 #include "ip_utils.h"
 #include "ring_types.h" // enable_if_base_of
+#include "security/certstore.h"
 
 #include <opendht/dhtrunner.h>
 #include <opendht/default_types.h>
diff --git a/src/security/certstore.h b/src/security/certstore.h
index b3aa775711..f49c664ceb 100644
--- a/src/security/certstore.h
+++ b/src/security/certstore.h
@@ -32,9 +32,9 @@
 #include <future>
 #include <mutex>
 
-namespace ring { namespace tls {
+namespace crypto = ::dht::crypto;
 
-namespace crypto = dht::crypto;
+namespace ring { namespace tls {
 
 enum class TrustStatus {
     UNTRUSTED = 0,
diff --git a/src/security/tls_session.cpp b/src/security/tls_session.cpp
index d822237dd2..0ab03f56e4 100644
--- a/src/security/tls_session.cpp
+++ b/src/security/tls_session.cpp
@@ -19,8 +19,7 @@
  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA.
  */
 
-#include <ip_utils.h>       // DO NOT CHANGE ORDER OF THIS INCLUDE
-#include <opendht/crypto.h> // OR MINGWIN FAILS TO BUILD
+#include <ip_utils.h>       // DO NOT CHANGE ORDER OF THIS INCLUDE OR MINGWIN FAILS TO BUILD
 
 #include "tls_session.h"
 
diff --git a/src/security/tlsvalidator.h b/src/security/tlsvalidator.h
index b84f593bc6..5643531b06 100644
--- a/src/security/tlsvalidator.h
+++ b/src/security/tlsvalidator.h
@@ -26,13 +26,16 @@
 
 #include "enumclass_utils.h"
 
-#include <opendht/crypto.h>
-
 #include <string>
 #include <vector>
 #include <memory>
 
-namespace ring {namespace tls {
+// OpenDHT
+namespace dht { namespace crypto {
+struct Certificate;
+}} // namespace dht::crypto
+
+namespace ring { namespace tls {
 
 #if !defined (S_IRWXG)
 #define S_IRWXG 00070
diff --git a/src/sip/pres_sub_client.cpp b/src/sip/pres_sub_client.cpp
index 8c65b2e5fe..682f93b0db 100644
--- a/src/sip/pres_sub_client.cpp
+++ b/src/sip/pres_sub_client.cpp
@@ -28,6 +28,7 @@
 #include <pjsip/sip_endpoint.h>
 #include <string>
 #include <sstream>
+#include <thread>
 #include <pj/pool.h>
 #include <pjsip/sip_ua_layer.h>
 #include <pjsip-simple/evsub.h>
diff --git a/src/sip/sipaccount.cpp b/src/sip/sipaccount.cpp
index ff20e246cc..1e8aafec24 100644
--- a/src/sip/sipaccount.cpp
+++ b/src/sip/sipaccount.cpp
@@ -62,6 +62,8 @@
 
 #include "im/instant_messaging.h"
 
+#include <opendht/crypto.h>
+
 #include <unistd.h>
 
 #include <algorithm>
diff --git a/src/sip/sipaccountbase.h b/src/sip/sipaccountbase.h
index 01e538b863..67d5c4daf2 100644
--- a/src/sip/sipaccountbase.h
+++ b/src/sip/sipaccountbase.h
@@ -30,17 +30,21 @@
 #include "sip_utils.h"
 #include "ip_utils.h"
 #include "noncopyable.h"
-#include "security/certstore.h"
 #include "im/message_engine.h"
 
 #include <pjsip/sip_types.h>
-#include <opendht/value.h>
 
 #include <array>
 #include <vector>
 #include <map>
 #include <memory>
 
+#ifdef _WIN32
+typedef uint16_t in_port_t;
+#else
+#include <netinet/in.h> // For in_port_t support
+#endif
+
 struct pjsip_dialog;
 struct pjsip_inv_session;
 struct pjmedia_sdp_session;
diff --git a/src/sip/sipcall.cpp b/src/sip/sipcall.cpp
index 62dcad06cc..d1a2e2eb17 100644
--- a/src/sip/sipcall.cpp
+++ b/src/sip/sipcall.cpp
@@ -51,6 +51,8 @@
 
 #include "errno.h"
 
+#include <opendht/crypto.h>
+
 namespace ring {
 
 using sip_utils::CONST_PJ_STR;
diff --git a/src/sip/sippresence.cpp b/src/sip/sippresence.cpp
index f1a5b63442..2fca3206ac 100644
--- a/src/sip/sippresence.cpp
+++ b/src/sip/sippresence.cpp
@@ -30,6 +30,8 @@
 #include "client/ring_signal.h"
 #include "sip_utils.h"
 
+#include <opendht/crypto.h>
+
 #include <thread>
 #include <sstream>
 
diff --git a/src/sip/siptransport.cpp b/src/sip/siptransport.cpp
index dfd98291be..b7d8089e71 100644
--- a/src/sip/siptransport.cpp
+++ b/src/sip/siptransport.cpp
@@ -40,6 +40,8 @@
 #include <pjlib.h>
 #include <pjlib-util.h>
 
+#include <opendht/crypto.h>
+
 #include <stdexcept>
 #include <sstream>
 #include <algorithm>
diff --git a/src/sip/siptransport.h b/src/sip/siptransport.h
index 5c24bcd308..4bece74f0c 100644
--- a/src/sip/siptransport.h
+++ b/src/sip/siptransport.h
@@ -31,8 +31,6 @@
 #include "noncopyable.h"
 #include "logger.h"
 
-#include <opendht/crypto.h>
-
 #include <pjsip.h>
 #include <pjnath/stun_config.h>
 
@@ -45,6 +43,11 @@
 #include <list>
 #include <memory>
 
+// OpenDHT
+namespace dht { namespace crypto {
+struct Certificate;
+}} // namespace dht::crypto
+
 namespace ring {
 
 struct SipTransportDescr
-- 
GitLab