minor rlp things

This commit is contained in:
obscuren 2014-08-01 10:21:43 +02:00
parent 5a2d62e4d9
commit 5ede1224e4
3 changed files with 14 additions and 16 deletions

View File

@ -32,12 +32,14 @@ const (
RlpEmptyStr = 0x40 RlpEmptyStr = 0x40
) )
const rlpEof = -1
func Char(c []byte) int { func Char(c []byte) int {
if len(c) > 0 { if len(c) > 0 {
return int(c[0]) return int(c[0])
} }
return 0 return rlpEof
} }
func DecodeWithReader(reader *bytes.Buffer) interface{} { func DecodeWithReader(reader *bytes.Buffer) interface{} {
@ -46,8 +48,6 @@ func DecodeWithReader(reader *bytes.Buffer) interface{} {
// Read the next byte // Read the next byte
char := Char(reader.Next(1)) char := Char(reader.Next(1))
switch { switch {
case char == 0:
return nil
case char <= 0x7f: case char <= 0x7f:
return char return char
@ -63,11 +63,7 @@ func DecodeWithReader(reader *bytes.Buffer) interface{} {
length := int(char - 0xc0) length := int(char - 0xc0)
for i := 0; i < length; i++ { for i := 0; i < length; i++ {
obj := DecodeWithReader(reader) obj := DecodeWithReader(reader)
if obj != nil {
slice = append(slice, obj) slice = append(slice, obj)
} else {
break
}
} }
return slice return slice
@ -75,13 +71,12 @@ func DecodeWithReader(reader *bytes.Buffer) interface{} {
length := ReadVarInt(reader.Next(int(char - 0xf7))) length := ReadVarInt(reader.Next(int(char - 0xf7)))
for i := uint64(0); i < length; i++ { for i := uint64(0); i < length; i++ {
obj := DecodeWithReader(reader) obj := DecodeWithReader(reader)
if obj != nil {
slice = append(slice, obj) slice = append(slice, obj)
} else {
break
}
} }
return slice
default: default:
panic(fmt.Sprintf("byte not supported: %q", char))
} }
return slice return slice

View File

@ -221,12 +221,15 @@ func (val *Value) Encode() []byte {
func (self *Value) Decode() { func (self *Value) Decode() {
v, _ := Decode(self.Bytes(), 0) v, _ := Decode(self.Bytes(), 0)
self.Val = v self.Val = v
//self.Val = DecodeWithReader(bytes.NewBuffer(self.Bytes()))
} }
func NewValueFromBytes(data []byte) *Value { func NewValueFromBytes(data []byte) *Value {
if len(data) != 0 { if len(data) != 0 {
data, _ := Decode(data, 0) value := NewValue(data)
return NewValue(data) value.Decode()
return value
} }
return NewValue(nil) return NewValue(nil)

View File

@ -403,7 +403,7 @@ func (p *Peer) HandleInbound() {
} }
} }
} }
if !p.ethereum.StateManager().BlockChain().HasBlock(lastBlock.Hash()) { if !blockChain.HasBlock(lastBlock.Hash()) {
// If we can't find a common ancenstor we need to request more blocks. // If we can't find a common ancenstor we need to request more blocks.
// FIXME: At one point this won't scale anymore since we are not asking for an offset // FIXME: At one point this won't scale anymore since we are not asking for an offset
// we just keep increasing the amount of blocks. // we just keep increasing the amount of blocks.