aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--forged/internal/unsorted/git_misc.go10
-rw-r--r--forged/internal/unsorted/http_handle_repo_log.go4
2 files changed, 11 insertions, 3 deletions
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
}
diff --git a/forged/internal/unsorted/http_handle_repo_log.go b/forged/internal/unsorted/http_handle_repo_log.go
index fa992b3..5d90871 100644
--- a/forged/internal/unsorted/http_handle_repo_log.go
+++ b/forged/internal/unsorted/http_handle_repo_log.go
@@ -15,7 +15,7 @@ import (
//
// TODO: This currently provides all commits in the branch. It should be
// paginated and cached instead.
-func (s *Server) httpHandleRepoLog(writer http.ResponseWriter, _ *http.Request, params map[string]any) {
+func (s *Server) httpHandleRepoLog(writer http.ResponseWriter, req *http.Request, params map[string]any) {
var repo *git.Repository
var refHash plumbing.Hash
var err error
@@ -33,7 +33,7 @@ func (s *Server) httpHandleRepoLog(writer http.ResponseWriter, _ *http.Request,
web.ErrorPage500(s.templates, writer, params, "Error getting recent commits: "+err.Error())
return
}
- params["commits"], params["commits_err"] = commitIterSeqErr(commitIter)
+ params["commits"], params["commits_err"] = commitIterSeqErr(req.Context(), commitIter)
s.renderTemplate(writer, "repo_log", params)
}