From e423f50f2b5acb2df79d2c4b6a466643d779a491 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Thu, 5 Feb 2026 11:09:01 -0300 Subject: [PATCH] Don't resolve hostname for ProxyConfig or we get NetworkOnMainThreadException during dependency injection --- .../main/kotlin/org/fdroid/settings/SettingsManager.kt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/org/fdroid/settings/SettingsManager.kt b/app/src/main/kotlin/org/fdroid/settings/SettingsManager.kt index 3ae2e943e..fee827df8 100644 --- a/app/src/main/kotlin/org/fdroid/settings/SettingsManager.kt +++ b/app/src/main/kotlin/org/fdroid/settings/SettingsManager.kt @@ -2,9 +2,9 @@ package org.fdroid.settings import android.content.Context import android.content.Context.MODE_PRIVATE +import androidx.annotation.UiThread import androidx.core.content.edit import dagger.hilt.android.qualifiers.ApplicationContext -import io.ktor.client.engine.ProxyBuilder import io.ktor.client.engine.ProxyConfig import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow @@ -35,6 +35,8 @@ import org.fdroid.settings.SettingsConstants.PREF_KEY_SHOW_INCOMPATIBLE import org.fdroid.settings.SettingsConstants.PREF_KEY_THEME import org.fdroid.settings.SettingsConstants.getAppListSortOrder import org.fdroid.settings.SettingsConstants.toSettings +import java.net.InetSocketAddress +import java.net.Proxy import javax.inject.Inject import javax.inject.Singleton @@ -112,12 +114,15 @@ class SettingsManager @Inject constructor( } val proxyConfig: ProxyConfig? + @UiThread get() { val proxyStr = prefs.getString(PREF_KEY_PROXY, PREF_DEFAULT_PROXY) return if (proxyStr.isNullOrBlank()) null else { val (host, port) = proxyStr.split(':') - ProxyBuilder.socks(host, port.toInt()) + // don't resolve hostname here, or we get NetworkOnMainThreadException + val address = InetSocketAddress.createUnresolved(host, port.toInt()) + Proxy(Proxy.Type.SOCKS, address) } }