diff --git a/CHANGES.md b/CHANGES.md index 123e070a5e..3ac2fff00f 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -28,6 +28,7 @@ Bugfix 🐛: - Cross- Signing | After signin in new session, verification paper trail in DM is off (#1191) - Failed to encrypt message in room (message stays in red), [thanks to pwr22] (#925) - Cross-Signing | web <-> riotX After QR code scan, gossiping fails (#1210) + - Fix crash when trying to download file without internet connection (#1229) - Local echo are not updated in timeline (for failed & encrypted states) Translations 🗣: diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/DefaultFileService.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/DefaultFileService.kt index d3f4a4c244..cfb0d23f2b 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/DefaultFileService.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/DefaultFileService.kt @@ -79,9 +79,15 @@ internal class DefaultFileService @Inject constructor( .url(resolvedUrl) .build() - val response = okHttpClient.newCall(request).execute() + val response = try { + okHttpClient.newCall(request).execute() + } catch (e: Throwable) { + return@flatMap Try.Failure(e) + } + var inputStream = response.body?.byteStream() Timber.v("Response size ${response.body?.contentLength()} - Stream available: ${inputStream?.available()}") + if (!response.isSuccessful || inputStream == null) { return@flatMap Try.Failure(IOException()) }