aboutsummaryrefslogtreecommitdiffstats
path: root/swarm/api/manifest.go
diff options
context:
space:
mode:
authorJanoš Guljaš <janos@users.noreply.github.com>2018-08-10 22:12:55 +0800
committerBalint Gabor <balint.g@gmail.com>2018-08-10 22:12:55 +0800
commit6d1e292eefa70b5cb76cd03ff61fc6c4550d7c36 (patch)
tree3bcd5ab444bd7486a9011656c85baeee00216286 /swarm/api/manifest.go
parent3ec5dda4d2dd0dec6d5bd465752f30e8f6ce208c (diff)
downloadgo-tangerine-6d1e292eefa70b5cb76cd03ff61fc6c4550d7c36.tar
go-tangerine-6d1e292eefa70b5cb76cd03ff61fc6c4550d7c36.tar.gz
go-tangerine-6d1e292eefa70b5cb76cd03ff61fc6c4550d7c36.tar.bz2
go-tangerine-6d1e292eefa70b5cb76cd03ff61fc6c4550d7c36.tar.lz
go-tangerine-6d1e292eefa70b5cb76cd03ff61fc6c4550d7c36.tar.xz
go-tangerine-6d1e292eefa70b5cb76cd03ff61fc6c4550d7c36.tar.zst
go-tangerine-6d1e292eefa70b5cb76cd03ff61fc6c4550d7c36.zip
Manifest cli fix and upload defaultpath only once (#17375)
* cmd/swarm: fix manifest subcommands and add tests * cmd/swarm: manifest update: update default entry for non-encrypted uploads * swarm/api: upload defaultpath file only once * swarm/api/client: improve UploadDirectory default path handling * cmd/swarm: support absolute and relative default path values * cmd/swarm: fix a typo in test * cmd/swarm: check encrypted uploads in manifest update tests
Diffstat (limited to 'swarm/api/manifest.go')
-rw-r--r--swarm/api/manifest.go17
1 files changed, 11 insertions, 6 deletions
diff --git a/swarm/api/manifest.go b/swarm/api/manifest.go
index fbd143f29..2a163dd39 100644
--- a/swarm/api/manifest.go
+++ b/swarm/api/manifest.go
@@ -106,13 +106,18 @@ func (a *API) NewManifestWriter(ctx context.Context, addr storage.Address, quitC
}
// AddEntry stores the given data and adds the resulting key to the manifest
-func (m *ManifestWriter) AddEntry(ctx context.Context, data io.Reader, e *ManifestEntry) (storage.Address, error) {
- key, _, err := m.api.Store(ctx, data, e.Size, m.trie.encrypted)
- if err != nil {
- return nil, err
- }
+func (m *ManifestWriter) AddEntry(ctx context.Context, data io.Reader, e *ManifestEntry) (key storage.Address, err error) {
entry := newManifestTrieEntry(e, nil)
- entry.Hash = key.Hex()
+ if data != nil {
+ key, _, err = m.api.Store(ctx, data, e.Size, m.trie.encrypted)
+ if err != nil {
+ return nil, err
+ }
+ entry.Hash = key.Hex()
+ }
+ if entry.Hash == "" {
+ return key, errors.New("missing entry hash")
+ }
m.trie.addEntry(entry, m.quitC)
return key, nil
}