Skip to content

Commit

Permalink
fix: chunk act upload (#5008)
Browse files Browse the repository at this point in the history
  • Loading branch information
bosi95 authored Feb 25, 2025
1 parent cbb1f24 commit f4dee9c
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 24 deletions.
6 changes: 5 additions & 1 deletion pkg/api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -529,7 +529,11 @@ func (s *Service) corsHandler(h http.Handler) http.Handler {
allowedHeaders := []string{
"User-Agent", "Accept", "X-Requested-With", "Access-Control-Request-Headers", "Access-Control-Request-Method", "Accept-Ranges", "Content-Encoding",
AuthorizationHeader, AcceptEncodingHeader, ContentTypeHeader, ContentDispositionHeader, RangeHeader, OriginHeader,
SwarmTagHeader, SwarmPinHeader, SwarmEncryptHeader, SwarmIndexDocumentHeader, SwarmErrorDocumentHeader, SwarmCollectionHeader, SwarmPostageBatchIdHeader, SwarmPostageStampHeader, SwarmDeferredUploadHeader, SwarmRedundancyLevelHeader, SwarmRedundancyStrategyHeader, SwarmRedundancyFallbackModeHeader, SwarmChunkRetrievalTimeoutHeader, SwarmLookAheadBufferSizeHeader, SwarmFeedIndexHeader, SwarmFeedIndexNextHeader, SwarmSocSignatureHeader, SwarmOnlyRootChunk, GasPriceHeader, GasLimitHeader, ImmutableHeader,
SwarmTagHeader, SwarmPinHeader, SwarmEncryptHeader, SwarmIndexDocumentHeader, SwarmErrorDocumentHeader, SwarmCollectionHeader,
SwarmPostageBatchIdHeader, SwarmPostageStampHeader, SwarmDeferredUploadHeader, SwarmRedundancyLevelHeader,
SwarmRedundancyStrategyHeader, SwarmRedundancyFallbackModeHeader, SwarmChunkRetrievalTimeoutHeader, SwarmLookAheadBufferSizeHeader,
SwarmFeedIndexHeader, SwarmFeedIndexNextHeader, SwarmSocSignatureHeader, SwarmOnlyRootChunk, GasPriceHeader, GasLimitHeader, ImmutableHeader,
SwarmActHeader, SwarmActTimestampHeader, SwarmActPublisherHeader, SwarmActHistoryAddressHeader,
}
allowedHeadersStr := strings.Join(allowedHeaders, ", ")

Expand Down
30 changes: 15 additions & 15 deletions pkg/api/chunk.go
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,21 @@ func (s *Service) chunkUploadHandler(w http.ResponseWriter, r *http.Request) {
}
}

err = putter.Put(r.Context(), chunk)
if err != nil {
logger.Debug("chunk upload: write chunk failed", "chunk_address", chunk.Address(), "error", err)
logger.Error(nil, "chunk upload: write chunk failed")
switch {
case errors.Is(err, postage.ErrBucketFull):
jsonhttp.PaymentRequired(ow, "batch is overissued")
case errors.Is(err, postage.ErrInvalidBatchSignature):
jsonhttp.BadRequest(ow, "stamp signature is invalid")
default:
jsonhttp.InternalServerError(ow, "chunk write error")
}
return
}

reference := chunk.Address()
if headers.Act {
reference, err = s.actEncryptionHandler(r.Context(), w, putter, reference, headers.HistoryAddress)
Expand All @@ -189,21 +204,6 @@ func (s *Service) chunkUploadHandler(w http.ResponseWriter, r *http.Request) {
}
}

err = putter.Put(r.Context(), chunk)
if err != nil {
logger.Debug("chunk upload: write chunk failed", "chunk_address", chunk.Address(), "error", err)
logger.Error(nil, "chunk upload: write chunk failed")
switch {
case errors.Is(err, postage.ErrBucketFull):
jsonhttp.PaymentRequired(ow, "batch is overissued")
case errors.Is(err, postage.ErrInvalidBatchSignature):
jsonhttp.BadRequest(ow, "stamp signature is invalid")
default:
jsonhttp.InternalServerError(ow, "chunk write error")
}
return
}

err = putter.Done(swarm.ZeroAddress)
if err != nil {
logger.Debug("done split failed", "error", err)
Expand Down
16 changes: 8 additions & 8 deletions pkg/api/soc.go
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,14 @@ func (s *Service) socUploadHandler(w http.ResponseWriter, r *http.Request) {
return
}

err = putter.Put(r.Context(), sch)
if err != nil {
logger.Debug("write chunk failed", "chunk_address", sch.Address(), "error", err)
logger.Error(nil, "write chunk failed")
jsonhttp.BadRequest(ow, "chunk write error")
return
}

reference := sch.Address()
if headers.Act {
reference, err = s.actEncryptionHandler(r.Context(), w, putter, reference, headers.HistoryAddress)
Expand All @@ -192,14 +200,6 @@ func (s *Service) socUploadHandler(w http.ResponseWriter, r *http.Request) {
}
}

err = putter.Put(r.Context(), sch)
if err != nil {
logger.Debug("write chunk failed", "chunk_address", sch.Address(), "error", err)
logger.Error(nil, "write chunk failed")
jsonhttp.BadRequest(ow, "chunk write error")
return
}

err = putter.Done(sch.Address())
if err != nil {
logger.Debug("done split failed", "error", err)
Expand Down

0 comments on commit f4dee9c

Please sign in to comment.