diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/okhttp/OkHttpClientFactory.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/okhttp/OkHttpClientFactory.kt index 73a7ff78b5..0dcdbb60b6 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/okhttp/OkHttpClientFactory.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/okhttp/OkHttpClientFactory.kt @@ -46,10 +46,16 @@ class OkHttpClientFactory( .addNetworkInterceptor(keyDecryptor) .build() + private var lastProxy: Proxy? = null + fun buildHttpClient( proxy: Proxy?, timeoutSeconds: Int, ): OkHttpClient { + if (proxy != lastProxy) { + rootClient.connectionPool.evictAll() + lastProxy = proxy + } val seconds = if (proxy != null) timeoutSeconds * 3 else timeoutSeconds return rootClient .newBuilder() diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/okhttp/OkHttpClientFactoryForRelays.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/okhttp/OkHttpClientFactoryForRelays.kt index 1729027c32..556c91bf07 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/okhttp/OkHttpClientFactoryForRelays.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/okhttp/OkHttpClientFactoryForRelays.kt @@ -37,6 +37,7 @@ class OkHttpClientFactoryForRelays( const val DEFAULT_IS_MOBILE: Boolean = false const val DEFAULT_TIMEOUT_ON_WIFI_SECS: Int = 10 const val DEFAULT_TIMEOUT_ON_MOBILE_SECS: Int = 30 + const val WEBSOCKET_PING_INTERVAL_SECS: Long = 120 private fun isEmulator(): Boolean = Build.FINGERPRINT.startsWith("generic") || @@ -76,10 +77,16 @@ class OkHttpClientFactoryForRelays( .addInterceptor(DefaultContentTypeInterceptor(userAgent)) .build() + private var lastProxy: Proxy? = null + fun buildHttpClient( proxy: Proxy?, timeoutSeconds: Int, ): OkHttpClient { + if (proxy != lastProxy) { + rootClient.connectionPool.evictAll() + lastProxy = proxy + } val seconds = if (proxy != null) timeoutSeconds * 3 else timeoutSeconds return rootClient .newBuilder() @@ -87,6 +94,7 @@ class OkHttpClientFactoryForRelays( .connectTimeout(Duration.ofSeconds(seconds.toLong())) .readTimeout(Duration.ofSeconds(seconds.toLong() * 3)) .writeTimeout(Duration.ofSeconds(seconds.toLong() * 3)) + .pingInterval(Duration.ofSeconds(WEBSOCKET_PING_INTERVAL_SECS)) .build() } diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/single/basic/BasicRelayClient.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/single/basic/BasicRelayClient.kt index e832569884..33877f0f88 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/single/basic/BasicRelayClient.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/single/basic/BasicRelayClient.kt @@ -228,7 +228,7 @@ open class BasicRelayClient( } fun dontTryAgainForALongTime() { - delayToConnectInSeconds = TimeUtils.ONE_DAY + delayToConnectInSeconds = TimeUtils.FIVE_MINUTES } override fun sendOrConnectAndSync(cmd: Command) {