Skip to content

Commit 952f135

Browse files
committed
feat: expose closer for GetResponse
1 parent 6f324be commit 952f135

4 files changed

+17
-0
lines changed

gateway/gateway.go

+12
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,18 @@ type GetRange struct {
6666
type GetResponse struct {
6767
bytes files.File
6868
directoryMetadata *directoryMetadata
69+
closeFn func() error
70+
}
71+
72+
func (g *GetResponse) Close() error {
73+
if g.closeFn == nil {
74+
return nil
75+
}
76+
return g.closeFn()
77+
}
78+
79+
func (g *GetResponse) SetCloser(closeFn func() error) {
80+
g.closeFn = closeFn
6981
}
7082

7183
type directoryMetadata struct {

gateway/handler_defaults.go

+1
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ func (i *handler) serveDefaults(ctx context.Context, w http.ResponseWriter, r *h
7171
}
7272
}
7373
}
74+
defer getResp.Close()
7475
if getResp.bytes != nil {
7576
bytesResponse = getResp.bytes
7677
defer bytesResponse.Close()

gateway/handler_unixfs__redirects.go

+3
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ func (i *handler) getRedirectRules(r *http.Request, redirectsPath ImmutablePath)
160160
}
161161
return false, nil, err
162162
}
163+
defer redirectsFileGetResp.Close()
163164

164165
if redirectsFileGetResp.bytes == nil {
165166
return false, nil, fmt.Errorf(" _redirects is not a file")
@@ -186,6 +187,7 @@ func (i *handler) serve4xx(w http.ResponseWriter, r *http.Request, content4xxPat
186187
if err != nil {
187188
return err
188189
}
190+
defer getresp.Close()
189191

190192
if getresp.bytes == nil {
191193
return fmt.Errorf("could not convert node for %d page to file", status)
@@ -266,6 +268,7 @@ func (i *handler) searchUpTreeFor404(r *http.Request, imPath ImmutablePath) (fil
266268
if err != nil {
267269
continue
268270
}
271+
defer getResp.Close()
269272
if getResp.bytes == nil {
270273
return nil, "", fmt.Errorf("found a pretty 404 but it was not a file")
271274
}

gateway/handler_unixfs_dir.go

+1
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ func (i *handler) serveDirectory(ctx context.Context, w http.ResponseWriter, r *
8383
var getResp *GetResponse
8484
_, getResp, err = i.api.Get(ctx, imIndexPath)
8585
if err == nil {
86+
defer getResp.Close()
8687
if getResp.bytes == nil {
8788
webError(w, fmt.Errorf("%q could not be read: %w", imIndexPath, files.ErrNotReader), http.StatusUnprocessableEntity)
8889
return false

0 commit comments

Comments
 (0)