From fa80912db2db9cf27b3f8be4625c71feafa2df0e Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Fri, 22 Aug 2025 13:50:28 -0400 Subject: [PATCH] Uses a separate okhttp for DM relays --- .../java/com/vitorpamplona/amethyst/Amethyst.kt | 16 +++++++++++++++- .../service/okhttp/ProxySettingsAnchor.kt | 1 + 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/Amethyst.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/Amethyst.kt index fe960b6d1..70e36a3f5 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/Amethyst.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/Amethyst.kt @@ -102,12 +102,26 @@ class Amethyst : Application() { scope = applicationIOScope, ) + // manages all relay connections + val okHttpClientForRelaysForDms = + DualHttpClientManager( + userAgent = appAgent, + proxyPortProvider = torManager.activePortOrNull, + isMobileDataProvider = connManager.isMobileOrNull, + keyCache = keyCache, + scope = applicationIOScope, + ) + val torProxySettingsAnchor = ProxySettingsAnchor() // Connects the NostrClient class with okHttp val websocketBuilder = OkHttpWebSocket.Builder { url -> - okHttpClientForRelays.getHttpClient(torProxySettingsAnchor.useProxy(url)) + if (torProxySettingsAnchor.isDM(url)) { + okHttpClientForRelaysForDms.getHttpClient(torProxySettingsAnchor.useProxy(url)) + } else { + okHttpClientForRelays.getHttpClient(torProxySettingsAnchor.useProxy(url)) + } } // Caches all events in Memory diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/okhttp/ProxySettingsAnchor.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/okhttp/ProxySettingsAnchor.kt index 37af51d96..b97d329a2 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/okhttp/ProxySettingsAnchor.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/okhttp/ProxySettingsAnchor.kt @@ -38,5 +38,6 @@ class ProxySettingsAnchor { ), ) + var isDM: (NormalizedRelayUrl) -> Boolean = { it in flow.value.value.dmRelayList } var useProxy: (NormalizedRelayUrl) -> Boolean = { flow.value.value.useTor(it) } }