From 669924e830df4fadaaa71691dc90942189598dc7 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sun, 6 Apr 2025 11:07:36 +0800 Subject: HTTP: git log should stop on context done --- forged/internal/unsorted/git_misc.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'forged/internal/unsorted/git_misc.go') diff --git a/forged/internal/unsorted/git_misc.go b/forged/internal/unsorted/git_misc.go index ceda3d1..dd93726 100644 --- a/forged/internal/unsorted/git_misc.go +++ b/forged/internal/unsorted/git_misc.go @@ -67,7 +67,7 @@ WHERE g.depth = cardinality($1::text[]) // The pointer to error is guaranteed to be populated with either nil or the // error returned by the commit iterator after the returned iterator is // finished. -func commitIterSeqErr(commitIter object.CommitIter) (iter.Seq[*object.Commit], *error) { +func commitIterSeqErr(ctx context.Context, commitIter object.CommitIter) (iter.Seq[*object.Commit], *error) { var err error return func(yield func(*object.Commit) bool) { for { @@ -79,6 +79,14 @@ func commitIterSeqErr(commitIter object.CommitIter) (iter.Seq[*object.Commit], * err = err2 return } + + select { + case <-ctx.Done(): + err = ctx.Err() + return + default: + } + if !yield(commit) { return } -- cgit v1.2.3