@cryptotaxi247 / kubo / commits / 950e492fc

core/corehttp: Close DAGReaders when done

Matt Bell committed Jan 27, 2015 at 00:36 UTC 950e492fc4a0ce4cfbb279d6930036e38b90b7da
1 file changed +4 -2
core/corehttp/gateway_handler.go
+4 -2
@@ -24,7 +24,7 @@ type gateway interface {
24 ResolvePath(string) (*dag.Node, error)
25 NewDagFromReader(io.Reader) (*dag.Node, error)
26 AddNodeToDAG(nd *dag.Node) (u.Key, error)
27 - NewDagReader(nd *dag.Node) (io.ReadSeeker, error)
27 + NewDagReader(nd *dag.Node) (uio.ReadSeekCloser, error)
28 }
29
30 // shortcut for templating
@@ -96,7 +96,7 @@ func (i *gatewayHandler) AddNodeToDAG(nd *dag.Node) (u.Key, error) {
96 return i.node.DAG.Add(nd)
97 }
98
99 -func (i *gatewayHandler) NewDagReader(nd *dag.Node) (io.ReadSeeker, error) {
99 +func (i *gatewayHandler) NewDagReader(nd *dag.Node) (uio.ReadSeekCloser, error) {
100 return uio.NewDagReader(i.node.Context(), nd, i.node.DAG)
101 }
102
@@ -125,6 +125,7 @@ func (i *gatewayHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
125
126 dr, err := i.NewDagReader(nd)
127 if err == nil {
128 + defer dr.Close()
129 _, name := path.Split(urlPath)
130 // set modtime to a really long time ago, since files are immutable and should stay cached
131 modtime := time.Unix(1, 0)
@@ -162,6 +163,7 @@ func (i *gatewayHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
163 internalWebError(w, err)
164 return
165 }
166 + defer dr.Close()
167 // write to request
168 io.Copy(w, dr)
169 break