Skip to content
This repository was archived by the owner on May 27, 2026. It is now read-only.

Commit 2ee763a

Browse files
committed
[Milky] Fix some streams are not closed, causing memory leaks
1 parent 3f22bac commit 2ee763a

3 files changed

Lines changed: 10 additions & 5 deletions

File tree

Lagrange.Milky/Api/Handler/File/UploadGroupFileHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public class UploadGroupFileHandler(BotContext bot, ResourceResolver resolver) :
1313

1414
public async Task<UploadGroupFileResult> HandleAsync(UploadGroupFileParameter parameter, CancellationToken token)
1515
{
16-
var stream = await _resolver.ToMemoryStreamAsync(parameter.FileUri, token);
16+
using var stream = await _resolver.ToMemoryStreamAsync(parameter.FileUri, token);
1717
var id = await _bot.SendGroupFile(parameter.GroupId, stream, parameter.FileName, parameter.ParentFolderId);
1818

1919
return new UploadGroupFileResult(id);

Lagrange.Milky/Api/Handler/File/UploadPrivateFileHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public class UploadPrivateFileHandler(BotContext bot, ResourceResolver resolver)
1313

1414
public async Task<UploadPrivateFileResult> HandleAsync(UploadPrivateFileParameter parameter, CancellationToken token)
1515
{
16-
var stream = await _resolver.ToMemoryStreamAsync(parameter.FileUri, token);
16+
using var stream = await _resolver.ToMemoryStreamAsync(parameter.FileUri, token);
1717
(int _, _) = await _bot.SendFriendFile(parameter.UserId, stream, parameter.FileName);
1818

1919
// TODO: The URL cannot be located at this time

Lagrange.Milky/Utility/EntityConvert.Segment.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,12 +99,17 @@ await _resolver.ToMemoryStreamAsync(image.Data.Uri, token),
9999
"normal" => 0,
100100
"sticker" => 1,
101101
_ => throw new NotSupportedException(),
102-
}
102+
},
103+
disposeOnCompletion: true
104+
),
105+
RecordOutgoingSegment record => new RecordEntity(
106+
await _resolver.ToMemoryStreamAsync(record.Data.Uri, token),
107+
disposeOnCompletion: true
103108
),
104-
RecordOutgoingSegment record => new RecordEntity(await _resolver.ToMemoryStreamAsync(record.Data.Uri, token)),
105109
VideoOutgoingSegment video => new VideoEntity(
106110
await _resolver.ToMemoryStreamAsync(video.Data.Uri, token),
107-
video.Data.ThumbUri != null ? await _resolver.ToMemoryStreamAsync(video.Data.ThumbUri, token) : null
111+
video.Data.ThumbUri != null ? await _resolver.ToMemoryStreamAsync(video.Data.ThumbUri, token) : null,
112+
disposeOnCompletion: true
108113
),
109114
// TODO: ForwardOutgoingSegment
110115
_ => throw new NotSupportedException(),

0 commit comments

Comments
 (0)