diff --git a/bitcask.go b/bitcask.go index 567210c..5199201 100644 --- a/bitcask.go +++ b/bitcask.go @@ -179,10 +179,10 @@ func (b *Bitcask) Put(key, value []byte) error { if len(key) == 0 { return ErrEmptyKey } - if uint32(len(key)) > b.config.MaxKeySize { + if b.config.MaxKeySize > 0 && uint32(len(key)) > b.config.MaxKeySize { return ErrKeyTooLarge } - if uint64(len(value)) > b.config.MaxValueSize { + if b.config.MaxValueSize > 0 && uint64(len(value)) > b.config.MaxValueSize { return ErrValueTooLarge } diff --git a/internal/data/codec/decoder.go b/internal/data/codec/decoder.go index fe6bb59..4c1f93a 100644 --- a/internal/data/codec/decoder.go +++ b/internal/data/codec/decoder.go @@ -74,7 +74,7 @@ func getKeyValueSizes(buf []byte, maxKeySize uint32, maxValueSize uint64) (uint3 actualKeySize := binary.BigEndian.Uint32(buf[:keySize]) actualValueSize := binary.BigEndian.Uint64(buf[keySize:]) - if actualKeySize > maxKeySize || actualValueSize > maxValueSize || actualKeySize == 0 { + if (maxKeySize > 0 && actualKeySize > maxKeySize) || (maxValueSize > 0 && actualValueSize > maxValueSize) || actualKeySize == 0 { return 0, 0, errInvalidKeyOrValueSize }