Unified Push: Ignore the potential SSL error when the custom gateway is testing

When the Unified Push is enabled, the application checks the potential custom gateway before applying it. If an SSL error happens, the application may ignore this error and keep using this custom gateway. The actual SSL check will be done server side where this gateway is actually used.
This commit is contained in:
Giom Foret 2023-11-15 17:10:44 +01:00
parent 1a941149ab
commit 7c58af735b

View File

@ -26,11 +26,13 @@ import im.vector.app.core.resources.StringProvider
import im.vector.app.core.utils.getApplicationLabel
import org.matrix.android.sdk.api.Matrix
import org.matrix.android.sdk.api.cache.CacheStrategy
import org.matrix.android.sdk.api.failure.Failure
import org.matrix.android.sdk.api.util.MatrixJsonParser
import org.unifiedpush.android.connector.UnifiedPush
import timber.log.Timber
import java.net.URL
import javax.inject.Inject
import javax.net.ssl.SSLHandshakeException
class UnifiedPushHelper @Inject constructor(
private val context: Context,
@ -104,7 +106,11 @@ class UnifiedPushHelper @Inject constructor(
// else, unifiedpush, and pushkey is an endpoint
val gateway = stringProvider.getString(R.string.default_push_gateway_http_url)
val parsed = URL(endpoint)
val port = if (parsed.port != -1) { ":${parsed.port}" } else { "" }
val port = if (parsed.port != -1) {
":${parsed.port}"
} else {
""
}
val custom = "${parsed.protocol}://${parsed.host}${port}/_matrix/push/v1/notify"
Timber.i("Testing $custom")
try {
@ -120,7 +126,13 @@ class UnifiedPushHelper @Inject constructor(
}
}
} catch (e: Throwable) {
Timber.d(e, "Cannot try custom gateway")
Timber.e(e, "Cannot try custom gateway")
if (e is Failure.NetworkConnection && e.ioException is SSLHandshakeException) {
Timber.w(e, "SSLHandshakeException, ignore this error")
unifiedPushStore.storePushGateway(custom)
onDoneRunnable?.run()
return
}
}
unifiedPushStore.storePushGateway(gateway)
onDoneRunnable?.run()