From b7b88cd763afbd58e26dd819924a30b7f929e5ce Mon Sep 17 00:00:00 2001 From: Jae Kwon Date: Sun, 18 Jan 2015 23:59:21 -0800 Subject: [PATCH] use WriteTime/ReadTime, and also log how the block header gets hashed --- binary/reflect.go | 8 ++++---- block/block.go | 6 +++++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/binary/reflect.go b/binary/reflect.go index 2300884fb..3ea8f0f6b 100644 --- a/binary/reflect.go +++ b/binary/reflect.go @@ -232,9 +232,9 @@ func readReflect(rv reflect.Value, rt reflect.Type, r io.Reader, n *int64, err * case reflect.Struct: if rt == timeType { // Special case: time.Time - num := ReadInt64(r, n, err) - log.Debug(Fmt("Read time: %v", num)) - rv.Set(reflect.ValueOf(time.Unix(num, 0))) + t := ReadTime(r, n, err) + log.Debug(Fmt("Read time: %v", t)) + rv.Set(reflect.ValueOf(t)) } else { numFields := rt.NumField() for i := 0; i < numFields; i++ { @@ -358,7 +358,7 @@ func writeReflect(rv reflect.Value, rt reflect.Type, w io.Writer, n *int64, err case reflect.Struct: if rt == timeType { // Special case: time.Time - WriteInt64(rv.Interface().(time.Time).Unix(), w, n, err) + WriteTime(rv.Interface().(time.Time), w, n, err) } else { numFields := rt.NumField() for i := 0; i < numFields; i++ { diff --git a/block/block.go b/block/block.go index 32f041160..30ef0b5bf 100644 --- a/block/block.go +++ b/block/block.go @@ -124,12 +124,16 @@ type Header struct { func (h *Header) Hash() []byte { if h.hash == nil { + buf := new(bytes.Buffer) hasher, n, err := sha256.New(), new(int64), new(error) - binary.WriteBinary(h, hasher, n, err) + binary.WriteBinary(h, buf, n, err) if *err != nil { panic(err) } + log.Debug("Hashing", "bytes", buf.Bytes()) + hasher.Write(buf.Bytes()) h.hash = hasher.Sum(nil) + log.Debug("Hashing got", "hash", h.hash) } return h.hash }