mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2024-11-24 18:36:21 +03:00
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:
parent
1a941149ab
commit
7c58af735b
1 changed files with 14 additions and 2 deletions
|
@ -26,11 +26,13 @@ import im.vector.app.core.resources.StringProvider
|
||||||
import im.vector.app.core.utils.getApplicationLabel
|
import im.vector.app.core.utils.getApplicationLabel
|
||||||
import org.matrix.android.sdk.api.Matrix
|
import org.matrix.android.sdk.api.Matrix
|
||||||
import org.matrix.android.sdk.api.cache.CacheStrategy
|
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.matrix.android.sdk.api.util.MatrixJsonParser
|
||||||
import org.unifiedpush.android.connector.UnifiedPush
|
import org.unifiedpush.android.connector.UnifiedPush
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
import java.net.URL
|
import java.net.URL
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
import javax.net.ssl.SSLHandshakeException
|
||||||
|
|
||||||
class UnifiedPushHelper @Inject constructor(
|
class UnifiedPushHelper @Inject constructor(
|
||||||
private val context: Context,
|
private val context: Context,
|
||||||
|
@ -104,7 +106,11 @@ class UnifiedPushHelper @Inject constructor(
|
||||||
// else, unifiedpush, and pushkey is an endpoint
|
// else, unifiedpush, and pushkey is an endpoint
|
||||||
val gateway = stringProvider.getString(R.string.default_push_gateway_http_url)
|
val gateway = stringProvider.getString(R.string.default_push_gateway_http_url)
|
||||||
val parsed = URL(endpoint)
|
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"
|
val custom = "${parsed.protocol}://${parsed.host}${port}/_matrix/push/v1/notify"
|
||||||
Timber.i("Testing $custom")
|
Timber.i("Testing $custom")
|
||||||
try {
|
try {
|
||||||
|
@ -120,7 +126,13 @@ class UnifiedPushHelper @Inject constructor(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (e: Throwable) {
|
} 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)
|
unifiedPushStore.storePushGateway(gateway)
|
||||||
onDoneRunnable?.run()
|
onDoneRunnable?.run()
|
||||||
|
|
Loading…
Reference in a new issue