Релиз 1.4.2: защита от звонков с другого устройства, лог FCM токена
All checks were successful
Android Kernel Build / build (push) Successful in 21m53s
All checks were successful
Android Kernel Build / build (push) Successful in 21m53s
- CREATE_ROOM без ключей шифрования — сброс (звонок принят на другом устройстве) - dispose PeerConnection при завершении звонка (фикс зависания портов ~30с) - Сохранение FCM токена в crash_reports для rosettadev1
This commit is contained in:
@@ -23,8 +23,8 @@ val gitShortSha = safeGitOutput("rev-parse", "--short", "HEAD") ?: "unknown"
|
|||||||
// ═══════════════════════════════════════════════════════════
|
// ═══════════════════════════════════════════════════════════
|
||||||
// Rosetta versioning — bump here on each release
|
// Rosetta versioning — bump here on each release
|
||||||
// ═══════════════════════════════════════════════════════════
|
// ═══════════════════════════════════════════════════════════
|
||||||
val rosettaVersionName = "1.4.1"
|
val rosettaVersionName = "1.4.2"
|
||||||
val rosettaVersionCode = 43 // Increment on each release
|
val rosettaVersionCode = 44 // Increment on each release
|
||||||
val customWebRtcAar = file("libs/libwebrtc-custom.aar")
|
val customWebRtcAar = file("libs/libwebrtc-custom.aar")
|
||||||
|
|
||||||
android {
|
android {
|
||||||
|
|||||||
@@ -373,6 +373,14 @@ object CallManager {
|
|||||||
breadcrumb("SIG: CREATE_ROOM IGNORED — empty roomId!")
|
breadcrumb("SIG: CREATE_ROOM IGNORED — empty roomId!")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
// Если ключей нет — звонок был принят на другом устройстве,
|
||||||
|
// а сервер всё равно прислал CREATE_ROOM. Сбрасываем.
|
||||||
|
if (sharedKeyBytes == null && localPrivateKey == null) {
|
||||||
|
breadcrumb("SIG: CREATE_ROOM but no session keys — call accepted on another device, resetting")
|
||||||
|
CallSoundManager.stop()
|
||||||
|
resetSession(reason = null, notifyPeer = false)
|
||||||
|
return
|
||||||
|
}
|
||||||
roomId = incomingRoomId
|
roomId = incomingRoomId
|
||||||
updateState {
|
updateState {
|
||||||
it.copy(
|
it.copy(
|
||||||
|
|||||||
@@ -748,6 +748,15 @@ object ProtocolManager {
|
|||||||
send(subPacket)
|
send(subPacket)
|
||||||
lastSubscribedToken = token
|
lastSubscribedToken = token
|
||||||
addLog("🔔 Push token SUBSCRIBE sent")
|
addLog("🔔 Push token SUBSCRIBE sent")
|
||||||
|
|
||||||
|
// Сохраняем FCM токен в crash_reports для просмотра через rosettadev1
|
||||||
|
try {
|
||||||
|
val dir = java.io.File(context.filesDir, "crash_reports")
|
||||||
|
if (!dir.exists()) dir.mkdirs()
|
||||||
|
val f = java.io.File(dir, "fcm_token.txt")
|
||||||
|
val ts = java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss", java.util.Locale.getDefault()).format(java.util.Date())
|
||||||
|
f.writeText("=== FCM TOKEN ===\n\nTimestamp: $ts\nDeviceId: $deviceId\n\nToken:\n$token\n")
|
||||||
|
} catch (_: Throwable) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun requestSynchronize() {
|
private fun requestSynchronize() {
|
||||||
|
|||||||
Reference in New Issue
Block a user