fix: Add connection timeouts for notification handling
All checks were successful
/ build-debug (push) Successful in 5m22s

...and do not fail operations if notification handling fails --
notifications are best-effort.
This commit is contained in:
Peter Cai 2024-06-04 22:05:29 -04:00
parent 051bb9f1e3
commit 1536343b3f
2 changed files with 11 additions and 5 deletions

View file

@ -48,11 +48,16 @@ suspend fun <T> T.beginTrackedOperation(op: suspend () -> Boolean) where T : Fra
Log.d(TAG, "Latest notification is $latestSeq before operation")
if (op()) {
Log.d(TAG, "Operation has requested notification handling")
// Note that the exact instance of "channel" might have changed here if reconnected;
// so we MUST use the automatic getter for "channel"
channel.lpa.notifications.filter { it.seqNumber > latestSeq }.forEach {
Log.d(TAG, "Handling notification $it")
channel.lpa.handleNotification(it.seqNumber)
try {
// Note that the exact instance of "channel" might have changed here if reconnected;
// so we MUST use the automatic getter for "channel"
channel.lpa.notifications.filter { it.seqNumber > latestSeq }.forEach {
Log.d(TAG, "Handling notification $it")
channel.lpa.handleNotification(it.seqNumber)
}
} catch (e: Exception) {
// Ignore any error during notification handling
e.printStackTrace()
}
}
Log.d(TAG, "Operation complete")

View file

@ -33,6 +33,7 @@ class HttpInterfaceImpl: HttpInterface {
sslContext.init(null, trustManagers, SecureRandom())
val conn = parsedUrl.openConnection() as HttpsURLConnection
conn.connectTimeout = 2000
conn.sslSocketFactory = sslContext.socketFactory
conn.requestMethod = "POST"
conn.doInput = true