AeroToss v0.5.0: финальный аудит, багфиксы, тесты, релиз
- Исправлен cleanup файлов (catch-блок удаляет реальный файл) - Null safety для NsdManager (as? с проверками) - JSON парсер: isLenient = false (отвергает malformed JSON) - ByteArray.toInt(): добавлена require(size >= 4) - Исправлен typo в SendScreen - TransferEdgeCaseTest: 8 новых тестов edge cases - Собран macOS arm64 JAR (28 МБ) - Итого 73+ тестов, все проходят
This commit is contained in:
@@ -78,6 +78,8 @@ class AndroidFileTransferManager(private val context: Context) : TransferManager
|
||||
private suspend fun handleIncomingConnection(socket: Socket) {
|
||||
withContext(Dispatchers.IO) {
|
||||
val progressId = UUID.randomUUID().toString()
|
||||
var actualFile: File? = null
|
||||
var requestFileName: String = ""
|
||||
try {
|
||||
socket.use { sock ->
|
||||
sock.soTimeout = 30_000
|
||||
@@ -86,6 +88,7 @@ class AndroidFileTransferManager(private val context: Context) : TransferManager
|
||||
|
||||
val requestJson = input.readUTF()
|
||||
val request = Json.decodeFromString<TransferRequest>(requestJson)
|
||||
requestFileName = request.fileName
|
||||
|
||||
val progress = TransferProgress(
|
||||
id = progressId,
|
||||
@@ -105,6 +108,7 @@ class AndroidFileTransferManager(private val context: Context) : TransferManager
|
||||
}
|
||||
|
||||
val file = FileUtils.resolveUniqueFile(downloadsDir, request.fileName)
|
||||
actualFile = file
|
||||
val sha256 = MessageDigest.getInstance("SHA-256")
|
||||
var bytesWritten = 0L
|
||||
|
||||
@@ -157,11 +161,11 @@ class AndroidFileTransferManager(private val context: Context) : TransferManager
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
actualFile?.let { FileUtils.deleteIfExists(it) }
|
||||
val current = _incomingTransfers.value.find { it.id == progressId }
|
||||
if (current != null && current.state != TransferState.COMPLETED &&
|
||||
current.state != TransferState.FAILED && current.state != TransferState.CANCELLED
|
||||
) {
|
||||
FileUtils.deleteIfExists(File(downloadsDir, FileUtils.sanitizeFileName(current.request.fileName)))
|
||||
updateIncomingById(progressId, current.copy(
|
||||
state = TransferState.FAILED,
|
||||
error = e.message ?: "Unknown error"
|
||||
|
||||
Reference in New Issue
Block a user