mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-18 01:43:47 +00:00
swarm/api: for loop for GetFile
This commit is contained in:
parent
b775c55622
commit
f88ac098cb
2 changed files with 16 additions and 2 deletions
|
|
@ -308,7 +308,7 @@ func (self *Api) Put(content, contentType string, toEncrypt bool) (k storage.Key
|
|||
// Get uses iterative manifest retrieval and prefix matching
|
||||
// to resolve basePath to content using dpa retrieve
|
||||
// it returns a section reader, mimeType, status and an error
|
||||
func (self *Api) Get(key storage.Key, path string) (reader storage.LazySectionReader, mimeType string, status int, err error) {
|
||||
func (self *Api) Get(key storage.Key, path string) (reader *storage.LazyChunkReader, mimeType string, status int, err error) {
|
||||
log.Debug("api.get", "key", key, "path", path)
|
||||
apiGetCount.Inc(1)
|
||||
trie, err := loadManifest(self.dpa, key, nil)
|
||||
|
|
|
|||
|
|
@ -844,9 +844,23 @@ func (s *Server) HandleGetFile(w http.ResponseWriter, r *Request) {
|
|||
return
|
||||
}
|
||||
|
||||
var res []byte
|
||||
for {
|
||||
res, err = ioutil.ReadAll(reader)
|
||||
if err != nil {
|
||||
log.Error("handle.get.file", "ruid", r.ruid, "error", err)
|
||||
time.Sleep(200 * time.Millisecond)
|
||||
continue
|
||||
}
|
||||
log.Debug("handle.get.file.readall success", "ruid", r.ruid)
|
||||
break
|
||||
}
|
||||
|
||||
rdr := bytes.NewReader(res)
|
||||
|
||||
w.Header().Set("Content-Type", contentType)
|
||||
|
||||
http.ServeContent(w, &r.Request, "", time.Now(), reader)
|
||||
http.ServeContent(w, &r.Request, "", time.Now(), rdr)
|
||||
}
|
||||
|
||||
func (s *Server) ServeHTTP(rw http.ResponseWriter, r *http.Request) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue