diff --git a/gradle.properties b/gradle.properties index fa51fdbca09..89804737aba 100644 --- a/gradle.properties +++ b/gradle.properties @@ -13,7 +13,7 @@ glideVersion=4.11.0 kovenantVersion=3.3.0 curve25519Version=0.6.0 protobufVersion=2.5.0 -okhttpVersion=3.12.1 +okhttpVersion=4.11.0 jacksonDatabindVersion=2.9.8 appcompatVersion=1.5.1 materialVersion=1.7.0 diff --git a/libsignal/src/main/java/org/session/libsignal/utilities/HTTP.kt b/libsignal/src/main/java/org/session/libsignal/utilities/HTTP.kt index 05e12402e62..001094c3f57 100644 --- a/libsignal/src/main/java/org/session/libsignal/utilities/HTTP.kt +++ b/libsignal/src/main/java/org/session/libsignal/utilities/HTTP.kt @@ -7,6 +7,7 @@ import okhttp3.Request import okhttp3.RequestBody import okhttp3.Response import okhttp3.dnsoverhttps.DnsOverHttps +import java.net.InetAddress import java.security.SecureRandom import java.security.cert.X509Certificate import java.util.concurrent.TimeUnit @@ -16,8 +17,17 @@ import javax.net.ssl.X509TrustManager object HTTP { var isConnectedToNetwork: (() -> Boolean) = { false } + + + private val seedNodeConnection by lazy { - OkHttpClient().newBuilder() + val bootstrapClient = OkHttpClient.Builder().build() + val dns =DnsOverHttps.Builder().client(bootstrapClient) + .url("https://1.1.1.1/dns-query".toHttpUrl()) + .bootstrapDnsHosts(InetAddress.getByName("8.8.4.4"), InetAddress.getByName("8.8.8.8")) + .build() + bootstrapClient.newBuilder() + .dns(dns) .callTimeout(timeout, TimeUnit.SECONDS) .connectTimeout(timeout, TimeUnit.SECONDS) .readTimeout(timeout, TimeUnit.SECONDS) @@ -27,10 +37,6 @@ object HTTP { private val defaultConnection by lazy { - val dns = DnsOverHttps.Builder() - .url("https://1.1.1.1/dns-query".toHttpUrl()) - .build() - // Snode to snode communication uses self-signed certificates but clients can safely ignore this val trustManager = object : X509TrustManager { @@ -40,7 +46,13 @@ object HTTP { } val sslContext = SSLContext.getInstance("SSL") sslContext.init(null, arrayOf( trustManager ), SecureRandom()) - OkHttpClient().newBuilder() + + val bootstrapClient = OkHttpClient.Builder().build() + val dns =DnsOverHttps.Builder().client(bootstrapClient) + .url("https://1.1.1.1/dns-query".toHttpUrl()) + .bootstrapDnsHosts(InetAddress.getByName("8.8.4.4"), InetAddress.getByName("8.8.8.8")) + .build() + bootstrapClient.newBuilder() .dns(dns) .sslSocketFactory(sslContext.socketFactory, trustManager) .hostnameVerifier { _, _ -> true } @@ -62,12 +74,14 @@ object HTTP { val sslContext = SSLContext.getInstance("SSL") sslContext.init(null, arrayOf( trustManager ), SecureRandom()) - val dns = DnsOverHttps.Builder() + val bootstrapClient = OkHttpClient.Builder().build() + val dns =DnsOverHttps.Builder().client(bootstrapClient) .url("https://1.1.1.1/dns-query".toHttpUrl()) + .bootstrapDnsHosts(InetAddress.getByName("8.8.4.4"), InetAddress.getByName("8.8.8.8")) .build() - - - return OkHttpClient().newBuilder() + bootstrapClient.newBuilder() + .dns(dns) + return bootstrapClient.newBuilder() .dns(dns) .sslSocketFactory(sslContext.socketFactory, trustManager) .hostnameVerifier { _, _ -> true }