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 e94607efe2..678a7fae2f 100644 --- a/whisper/whisper.go +++ b/whisper/whisper.go @@ -23,6 +23,7 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/crypto/ecies" "github.com/ethereum/go-ethereum/event/filter" "github.com/ethereum/go-ethereum/logger" "github.com/ethereum/go-ethereum/logger/glog" @@ -301,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 { + case ecies.ErrInvalidPublicKey: origMessage, err := envelope.Open(nil) if err != nil { return nil