- Feb 18, 2021
-
-
Or Neeman authored
io.Reader may return n > 0 and io.EOF at the end of the input stream. readFull did not handle this correctly, looking only at the error. This fixes it to check for n == len(buf) as well.
-
- Nov 25, 2020
-
-
Alex Prut authored
Changes: Simplify nested complexity If an if blocks ends with a return statement then remove the else nesting. Most of the changes has also been reported in golint https://goreportcard.com/report/github.com/ethereum/go-ethereum#golint
-
- Nov 04, 2020
-
-
Martin Holst Swende authored
This PR contains a minor optimization in derivesha, by exposing the RLP int-encoding and making use of it to write integers directly to a buffer (an RLP integer is known to never require more than 9 bytes total). rlp.AppendUint64 might be useful in other places too. The code assumes, just as before, that the hasher (a trie) will copy the key internally, which it does when doing keybytesToHex(key). Co-authored-by:
Felix Lange <fjl@twurst.com>
-
- Sep 14, 2020
-
-
Felix Lange authored
This can be useful when working with raw RLP data.
-
- Jul 06, 2020
-
-
Felix Lange authored
This change further improves the performance of RLP encoding by removing allocations for big.Int and [...]byte types. I have added a new benchmark that measures RLP encoding of types.Block to verify that performance is improved.
-
- Jul 01, 2020
-
-
Marius van der Wijden authored
List headers made up 11% of all allocations during sync. This change removes most of those allocations by keeping the list header values cached in the encoder buffer instead. Since encoder buffers are pooled, list headers are no longer allocated in the common case where an encoder buffer is available for reuse. Co-authored-by:
Felix Lange <fjl@twurst.com>
-
- May 11, 2020
-
-
Martin Holst Swende authored
* cmd, core, eth: init tx lookup in background * core/rawdb: tiny log fixes to make it clearer what's happening * core, eth: fix rebase errors * core/rawdb: make reindexing less generic, but more optimal * rlp: implement rlp list iterator * core/rawdb: new implementation of tx indexing/unindex using generic tx iterator and hashing rlp-data * core/rawdb, cmd/utils: fix review concerns * cmd/utils: fix merge issue * core/rawdb: add some log formatting polishes Co-authored-by:
rjl493456442 <garyrong0905@gmail.com> Co-authored-by:
Péter Szilágyi <peterke@gmail.com>
-
- Nov 25, 2019
-
-
Felix Lange authored
* rlp: fix staticcheck warnings * rlp: fix ExampleDecode test
-
- Nov 18, 2019
-
-
Felix Lange authored
* build: use golangci-lint This changes build/ci.go to download and run golangci-lint instead of gometalinter. * core/state: fix unnecessary conversion * p2p/simulations: fix lock copying (found by go vet) * signer/core: fix unnecessary conversions * crypto/ecies: remove unused function cmpPublic * core/rawdb: remove unused function print * core/state: remove unused function xTestFuzzCutter * core/vm: disable TestWriteExpectedValues in a different way * core/forkid: remove unused function checksum * les: remove unused type proofsData * cmd/utils: remove unused functions prefixedNames, prefixFor * crypto/bn256: run goimports * p2p/nat: fix goimports lint issue * cmd/clef: avoid using unkeyed struct fields * les: cancel context in testRequest * rlp: delete unreachable code * core: gofmt * internal/build: simplify DownloadFile for Go 1.11 compatibility * build: remove go test --short flag * .travis.yml: disable build cache * whisper/whisperv6: fix ineffectual assignment in TestWhisperIdentityManagement * .golangci.yml: enable goconst and ineffassign linters * build: print message when there are no lint issues * internal/build: refactor download a bit
-
- Sep 13, 2019
-
-
Felix Lange authored
* rlp: improve nil pointer handling In both encoder and decoder, the rules for encoding nil pointers were a bit hard to understand, and didn't leave much choice. Since RLP allows two empty values (empty list, empty string), any protocol built on RLP must choose either of these values to represent the null value in a certain context. This change adds choice in the form of two new struct tags, "nilString" and "nilList". These can be used to specify how a nil pointer value is encoded. The "nil" tag still exists, but its implementation is now explicit and defines exactly how nil pointers are handled in a single place. Another important change in this commit is how nil pointers and the Encoder interface interact. The EncodeRLP method was previously called even on nil values, which was supposed to give users a choice of how their value would be handled when nil. It turns out this is a stupid idea. If you create a network protocol containing an object defined in another package, it's better to be able to say that the object should be a list or string when nil in the definition of the protocol message rather than defining the encoding of nil on the object itself. As of this commit, the encoding rules for pointers now take precedence over the Encoder interface rule. I think the "nil" tag will work fine for most cases. For special kinds of objects which are a struct in Go but strings in RLP, code using the object can specify the desired encoding of nil using the "nilString" and "nilList" tags. * rlp: propagate struct field type errors If a struct contained fields of undecodable type, the encoder and decoder would panic instead of returning an error. Fix this by propagating type errors in makeStruct{Writer,Decoder} and add a test.
-
- May 14, 2019
-
-
Felix Lange authored
These changes fix two corner cases related to internal handling of types in package rlp: The "tail" struct tag can only be applied to the last field. The check for this was wrong and didn't allow for private fields after the field with the tag. Unsupported types (e.g. structs containing int) which implement either the Encoder or Decoder interface but not both couldn't be encoded/decoded. Also fixes #19367
-
- Feb 25, 2019
-
-
Marius van der Wijden authored
Prevents reallocation, improves performance
-
- Sep 11, 2018
-
-
chenyufeng authored
-
- May 08, 2018
-
-
kiel barry authored
-
- Dec 11, 2017
-
-
Felix Lange authored
Issue found by @guidovranken
-
- Aug 24, 2017
-
-
Péter Szilágyi authored
-
- Jun 12, 2017
-
-
S. Matthew English authored
-
- Mar 07, 2017
-
-
Felix Lange authored
-
- Apr 15, 2016
-
-
Felix Lange authored
-
Felix Lange authored
-
- Feb 19, 2016
-
-
Felix Lange authored
-
- Sep 10, 2015
-
-
Felix Lange authored
-
Felix Lange authored
-
Felix Lange authored
These functions allow destructuring of raw rlp-encoded bytes without the overhead of reflection or copying.
-
Felix Lange authored
The bug can cause crashes if Read is called after EOF has been returned. No code performs such calls right now, but hitting the bug gets more likely as rlp.EncodeToReader gets used in more places.
-
- Aug 13, 2015
-
-
Péter Szilágyi authored
-
- Jul 23, 2015
-
-
Felix Lange authored
I forgot to update one instance of "go-ethereum" in commit 3f047be5.
-
- Jul 22, 2015
-
-
Felix Lange authored
All code outside of cmd/ is licensed as LGPL. The headers now reflect this by calling the whole work "the go-ethereum library".
-
- Jul 18, 2015
-
-
Felix Lange authored
Decoding did not reject byte arrays of length one with a single element b where 55 < b < 128. Such byte arrays must be rejected because they must be encoded as the single byte b instead.
-
- Jul 17, 2015
-
-
Felix Lange authored
-
- Jul 07, 2015
-
-
Felix Lange authored
-
- Jun 29, 2015
-
-
Felix Lange authored
-
Felix Lange authored
-
Felix Lange authored
-
- Apr 28, 2015
-
-
Felix Lange authored
The list size checking overflowed if the size information for a value was bigger than the list. This is resolved by always performing the check before reading.
-
- Apr 17, 2015
-
-
Felix Lange authored
-
Felix Lange authored
-
Felix Lange authored
The rules have changed as follows: * When decoding into pointers, empty values no longer produce a nil pointer. This can be overriden for struct fields using the struct tag "nil". * When decoding into structs, the input list must contain an element for each field.
-
Felix Lange authored
Input strings of length 1 containing a byte < 56 are non-minimal and should be encoded as a single byte instead. Reject such strings.
-
Felix Lange authored
All integers (including size information in type tags) need to be encoded using the smallest possible encoding. This commit expands the stricter validation introduced for *big.Int in commit 59597d23 to all integer types and size tags.
-