Skip to content

Commit

Permalink
Fix git.Blob.DataAsync(): close pipe since we return a NopCloser (#16899
Browse files Browse the repository at this point in the history
) (#16900)

* make sure headGitRepo is closed on err too
* refactor
* Fix git.Blob.DataAsync(): exec cancel since we already read all bytes (close pipe since we return a NopCloser)

Co-authored-by: zeripath <art27@cantab.net>
  • Loading branch information
6543 and zeripath authored Aug 31, 2021
1 parent 6777637 commit 0274933
Show file tree
Hide file tree
Showing 4 changed files with 7 additions and 9 deletions.
6 changes: 2 additions & 4 deletions modules/git/blob_nogogit.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@ func (b *Blob) DataAsync() (io.ReadCloser, error) {

if size < 4096 {
bs, err := ioutil.ReadAll(io.LimitReader(rd, size))
defer cancel()
if err != nil {
cancel()
return nil, err
}
_, err = rd.Discard(1)
Expand Down Expand Up @@ -105,27 +105,25 @@ func (b *blobReader) Read(p []byte) (n int, err error) {

// Close implements io.Closer
func (b *blobReader) Close() error {
defer b.cancel()
if b.n > 0 {
for b.n > math.MaxInt32 {
n, err := b.rd.Discard(math.MaxInt32)
b.n -= int64(n)
if err != nil {
b.cancel()
return err
}
b.n -= math.MaxInt32
}
n, err := b.rd.Discard(int(b.n))
b.n -= int64(n)
if err != nil {
b.cancel()
return err
}
}
if b.n == 0 {
_, err := b.rd.Discard(1)
b.n--
b.cancel()
return err
}
return nil
Expand Down
1 change: 0 additions & 1 deletion routers/web/repo/compare.go
Original file line number Diff line number Diff line change
Expand Up @@ -623,7 +623,6 @@ func CompareDiff(ctx *context.Context) {
headGitRepo.Close()
}
}()

if ctx.Written() {
return
}
Expand Down
3 changes: 0 additions & 3 deletions routers/web/repo/issue.go
Original file line number Diff line number Diff line change
Expand Up @@ -419,9 +419,6 @@ func RetrieveRepoMilestonesAndAssignees(ctx *context.Context, repo *models.Repos
}

handleTeamMentions(ctx)
if ctx.Written() {
return
}
}

func retrieveProjects(ctx *context.Context, repo *models.Repository) {
Expand Down
6 changes: 5 additions & 1 deletion routers/web/repo/pull.go
Original file line number Diff line number Diff line change
Expand Up @@ -1012,10 +1012,14 @@ func CompareAndPullRequestPost(ctx *context.Context) {
)

headUser, headRepo, headGitRepo, prInfo, baseBranch, headBranch := ParseCompareInfo(ctx)
defer func() {
if headGitRepo != nil {
headGitRepo.Close()
}
}()
if ctx.Written() {
return
}
defer headGitRepo.Close()

labelIDs, assigneeIDs, milestoneID, _ := ValidateRepoMetas(ctx, *form, true)
if ctx.Written() {
Expand Down

0 comments on commit 0274933

Please sign in to comment.