diff options
author | Torsten Grote <t@grobox.de> | 2024-01-02 10:46:30 -0300 |
---|---|---|
committer | Torsten Grote <t@grobox.de> | 2024-01-02 10:46:30 -0300 |
commit | 4d23c920fdc1a3eb0869f32a2faff4debbc653a4 (patch) | |
tree | 160506e353eba9af307cdddd2c0d584d839135d6 /wallet/src/main/java/net/taler | |
parent | 35527f90cbcf286c76aa2b9f7634badd8844cb57 (diff) | |
download | taler-android-4d23c920fdc1a3eb0869f32a2faff4debbc653a4.tar.gz taler-android-4d23c920fdc1a3eb0869f32a2faff4debbc653a4.tar.bz2 taler-android-4d23c920fdc1a3eb0869f32a2faff4debbc653a4.zip |
[wallet] Fix HTTP URIs and error handling
Previously, we would crash for certain URIs. Cleartext comms only allowed for localhost.
Diffstat (limited to 'wallet/src/main/java/net/taler')
-rw-r--r-- | wallet/src/main/java/net/taler/wallet/MainActivity.kt | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/wallet/src/main/java/net/taler/wallet/MainActivity.kt b/wallet/src/main/java/net/taler/wallet/MainActivity.kt index 4cbd738..16f0efa 100644 --- a/wallet/src/main/java/net/taler/wallet/MainActivity.kt +++ b/wallet/src/main/java/net/taler/wallet/MainActivity.kt @@ -66,10 +66,10 @@ import net.taler.wallet.HostCardEmulatorService.Companion.MERCHANT_NFC_DISCONNEC import net.taler.wallet.HostCardEmulatorService.Companion.TRIGGER_PAYMENT_ACTION import net.taler.wallet.databinding.ActivityMainBinding import net.taler.wallet.refund.RefundStatus +import java.io.IOException import java.net.HttpURLConnection import java.net.URL import java.util.Locale.ROOT -import javax.net.ssl.HttpsURLConnection class MainActivity : AppCompatActivity(), OnNavigationItemSelectedListener, OnPreferenceStartFragmentCallback { @@ -186,13 +186,18 @@ class MainActivity : AppCompatActivity(), OnNavigationItemSelectedListener, if (scheme == "http" || scheme == "https") { model.viewModelScope.launch(Dispatchers.IO) { - val conn: HttpsURLConnection = - URL(uri.toString()).openConnection() as HttpsURLConnection + val conn = URL(uri.toString()).openConnection() as HttpURLConnection Log.v(TAG, "prepare query: $uri") conn.setRequestProperty("Accept", "text/html") conn.connectTimeout = 5000 conn.requestMethod = "HEAD" - conn.connect() + try { + conn.connect() + } catch (e: IOException) { + Log.e(TAG, "Error connecting to $uri ", e) + showError(R.string.error_broken_uri, "$uri") + return@launch + } val status = conn.responseCode if (status == HttpURLConnection.HTTP_OK || status == HttpURLConnection.HTTP_PAYMENT_REQUIRED) { @@ -202,8 +207,7 @@ class MainActivity : AppCompatActivity(), OnNavigationItemSelectedListener, val talerHeaderUri = Uri.parse(talerHeader[0]) getTalerAction(talerHeaderUri, 0, actionFound) } - } - if (status == HttpURLConnection.HTTP_MOVED_TEMP + } else if (status == HttpURLConnection.HTTP_MOVED_TEMP || status == HttpURLConnection.HTTP_MOVED_PERM || status == HttpURLConnection.HTTP_SEE_OTHER ) { @@ -213,6 +217,8 @@ class MainActivity : AppCompatActivity(), OnNavigationItemSelectedListener, val locUri = Uri.parse(location[0]) getTalerAction(locUri, maxRedirects - 1, actionFound) } + } else { + showError(R.string.error_broken_uri, "$uri") } } } else { |