From 79328a5f01904dd616e53b0673ed050a7ede4dbb Mon Sep 17 00:00:00 2001 From: Jarrad Hope Date: Wed, 15 Jun 2016 14:37:40 +0200 Subject: [PATCH] whisper: fix message payload error handling and empty payload --- whisper/api.go | 3 +++ whisper/whisper.go | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/whisper/api.go b/whisper/api.go index d1f454a1fa..bf94aff4b1 100644 --- a/whisper/api.go +++ b/whisper/api.go @@ -178,6 +178,9 @@ func (s *PublicWhisperAPI) Post(args PostArgs) (bool, error) { // construct whisper message with transmission options message := NewMessage(common.FromHex(args.Payload)) + if len(message.Payload) == 0 && len(args.Payload) > 0 { + message.Payload = []byte(args.Payload) + } options := Options{ To: crypto.ToECDSAPub(common.FromHex(args.To)), TTL: time.Duration(args.TTL) * time.Second, diff --git a/whisper/whisper.go b/whisper/whisper.go index 0a49c1000b..e9386c1017 100644 --- a/whisper/whisper.go +++ b/whisper/whisper.go @@ -302,10 +302,11 @@ func (self *Whisper) open(envelope *Envelope) *Message { // Iterate over the keys and try to decrypt the message for _, key := range self.keys { message, err := envelope.Open(key) - if err == nil { + switch err { + case nil: message.To = &key.PublicKey return message - } else if err == ecies.ErrInvalidPublicKey { + case ecies.ErrInvalidPublicKey: return message } }