Skip to content

Commit b583c50

Browse files
committed
Gracefully handle missing Attachments folder and attachments
1 parent cec1a8c commit b583c50

File tree

2 files changed

+16
-9
lines changed

2 files changed

+16
-9
lines changed

Signal-Windows.Lib/OutgoingMessages.cs

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -76,14 +76,21 @@ public async Task HandleOutgoingMessages()
7676
outgoingAttachmentsList = new List<SignalServiceAttachment>();
7777
foreach (var attachment in outgoingSignalMessage.Attachments)
7878
{
79-
var file = await ApplicationData.Current.LocalCacheFolder.GetFileAsync(@"Attachments\" + attachment.Id + ".plain");
80-
var stream = await file.OpenStreamForReadAsync();
81-
outgoingAttachmentsList.Add(SignalServiceAttachment.NewStreamBuilder()
82-
.WithContentType(attachment.ContentType)
83-
.WithStream(stream)
84-
.WithLength(stream.Length)
85-
.WithFileName(attachment.SentFileName)
86-
.Build());
79+
try
80+
{
81+
var file = await ApplicationData.Current.LocalCacheFolder.GetFileAsync(@"Attachments\" + attachment.Id + ".plain");
82+
var stream = await file.OpenStreamForReadAsync();
83+
outgoingAttachmentsList.Add(SignalServiceAttachment.NewStreamBuilder()
84+
.WithContentType(attachment.ContentType)
85+
.WithStream(stream)
86+
.WithLength(stream.Length)
87+
.WithFileName(attachment.SentFileName)
88+
.Build());
89+
}
90+
catch (Exception e)
91+
{
92+
Logger.LogError($"HandleOutgoingMessages() failed to add attachment {attachment.Id}: {e.Message}\n{e.StackTrace}");
93+
}
8794
}
8895
}
8996

Signal-Windows.Lib/SignalLibHandle.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -538,7 +538,7 @@ internal async Task SaveAndDispatchSignalMessage(SignalMessage message, StorageF
538538
conversation.LastActiveTimestamp = message.ComposedTimestamp;
539539
if (attachmentStorageFile != null)
540540
{
541-
StorageFolder plaintextFile = await ApplicationData.Current.LocalCacheFolder.GetFolderAsync(@"Attachments\");
541+
StorageFolder plaintextFile = await ApplicationData.Current.LocalCacheFolder.CreateFolderAsync(@"Attachments\", CreationCollisionOption.OpenIfExists);
542542
foreach (var attachment in message.Attachments)
543543
{
544544
Logger.LogTrace(@"Copying attachment to \Attachments\{0}.plain", attachment.Id.ToString());

0 commit comments

Comments
 (0)