Skip to content

Commit 71989c8

Browse files
authored
fix: Return 400 when blobs exceed max limit (#140)
1 parent 39a9758 commit 71989c8

File tree

5 files changed

+19
-2
lines changed

5 files changed

+19
-2
lines changed

e2e/server_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package e2e_test
22

33
import (
4+
"fmt"
5+
"net/http"
46
"strings"
57
"testing"
68
"time"
@@ -309,6 +311,7 @@ func TestProxyServerWithOversizedBlob(t *testing.T) {
309311
}
310312

311313
require.True(t, oversizedError)
314+
require.Contains(t, err.Error(), fmt.Sprint(http.StatusBadRequest))
312315

313316
}
314317

server/server.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,14 @@ func (svr *Server) HandlePut(w http.ResponseWriter, r *http.Request) (commitment
235235
commitment, err := svr.router.Put(r.Context(), meta.Mode, comm, input)
236236
if err != nil {
237237
err = fmt.Errorf("put request failed with commitment %v (commitment mode %v): %w", comm, meta.Mode, err)
238+
239+
if errors.Is(err, store.ErrEigenDAOversizedBlob) || errors.Is(err, store.ErrProxyOversizedBlob) {
240+
// we add here any error that should be returned as a 400 instead of a 500.
241+
// currently only includes oversized blob requests
242+
svr.WriteBadRequest(w, err)
243+
return meta, err
244+
}
245+
238246
svr.WriteInternalError(w, err)
239247
return commitments.CommitmentMeta{}, MetaError{
240248
Err: err,

store/eigenda.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ func (e EigenDAStore) Put(ctx context.Context, value []byte) ([]byte, error) {
6666
return nil, fmt.Errorf("EigenDA client failed to re-encode blob: %w", err)
6767
}
6868
if uint64(len(encodedBlob)) > e.cfg.MaxBlobSizeBytes {
69-
return nil, fmt.Errorf("encoded blob is larger than max blob size: blob length %d, max blob size %d", len(value), e.cfg.MaxBlobSizeBytes)
69+
return nil, fmt.Errorf("%w: blob length %d, max blob size %d", ErrProxyOversizedBlob, len(value), e.cfg.MaxBlobSizeBytes)
7070
}
7171

7272
dispersalStart := time.Now()

store/memory.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ func (e *MemStore) Get(_ context.Context, commit []byte) ([]byte, error) {
134134
func (e *MemStore) Put(_ context.Context, value []byte) ([]byte, error) {
135135
time.Sleep(e.config.PutLatency)
136136
if uint64(len(value)) > e.config.MaxBlobSizeBytes {
137-
return nil, fmt.Errorf("blob is larger than max blob size: blob length %d, max blob size %d", len(value), e.config.MaxBlobSizeBytes)
137+
return nil, fmt.Errorf("%w: blob length %d, max blob size %d", ErrProxyOversizedBlob, len(value), e.config.MaxBlobSizeBytes)
138138
}
139139

140140
e.Lock()

store/store.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package store
22

33
import (
44
"context"
5+
"fmt"
56
"strings"
67
)
78

@@ -16,6 +17,11 @@ const (
1617
Unknown
1718
)
1819

20+
var (
21+
ErrProxyOversizedBlob = fmt.Errorf("encoded blob is larger than max blob size")
22+
ErrEigenDAOversizedBlob = fmt.Errorf("blob size cannot exceed")
23+
)
24+
1925
func (b BackendType) String() string {
2026
switch b {
2127
case EigenDA:

0 commit comments

Comments
 (0)