whisper: fix issues after rebase

This commit is contained in:
Guillaume Ballet 2018-04-21 19:56:31 +02:00
parent 2205d77508
commit 10e426d6f2
6 changed files with 19 additions and 15 deletions

View file

@ -22,6 +22,7 @@ package main
import ( import (
"bufio" "bufio"
"crypto/ecdsa" "crypto/ecdsa"
crand "crypto/rand"
"crypto/sha512" "crypto/sha512"
"encoding/binary" "encoding/binary"
"encoding/hex" "encoding/hex"
@ -87,6 +88,7 @@ var (
asymmetricMode = flag.Bool("asym", false, "use asymmetric encryption") asymmetricMode = flag.Bool("asym", false, "use asymmetric encryption")
generateKey = flag.Bool("generatekey", false, "generate and show the private key") generateKey = flag.Bool("generatekey", false, "generate and show the private key")
fileExMode = flag.Bool("fileexchange", false, "file exchange mode") fileExMode = flag.Bool("fileexchange", false, "file exchange mode")
fileReader = flag.Bool("filereader", false, "load and decrypt messages saved as files, display as plain text")
testMode = flag.Bool("test", false, "use of predefined parameters for diagnostics") testMode = flag.Bool("test", false, "use of predefined parameters for diagnostics")
echoMode = flag.Bool("echo", false, "echo mode: prints some arguments for diagnostics") echoMode = flag.Bool("echo", false, "echo mode: prints some arguments for diagnostics")
@ -107,6 +109,7 @@ var (
argSaveDir = flag.String("savedir", "", "directory where incoming messages will be saved as files") argSaveDir = flag.String("savedir", "", "directory where incoming messages will be saved as files")
useLibP2P = flag.Bool("libp2p", false, "Use libp2p as the protocol layer") useLibP2P = flag.Bool("libp2p", false, "Use libp2p as the protocol layer")
useDeadlines = flag.Bool("deadlines", false, "When using libp2p, force deadline checking")
) )
func main() { func main() {
@ -649,7 +652,6 @@ func messageLoop() {
printMessageInfo(msg) printMessageInfo(msg)
reportedOnce = true reportedOnce = true
} }
}
// All messages are saved upon specifying argSaveDir. // All messages are saved upon specifying argSaveDir.
// fileExMode only specifies how messages are displayed on the console after they are saved. // fileExMode only specifies how messages are displayed on the console after they are saved.

View file

@ -17,7 +17,6 @@
package mailserver package mailserver
import ( import (
"bytes"
"encoding/binary" "encoding/binary"
"fmt" "fmt"
@ -110,7 +109,7 @@ func (s *WMailServer) DeliverMail(peer whisper.Peer, request *whisper.Envelope)
ok, lower, upper, bloom := s.validateRequest([]byte(peer.ID()), request) ok, lower, upper, bloom := s.validateRequest([]byte(peer.ID()), request)
if ok { if ok {
s.processRequest(peer, lower, upper, topic) s.processRequest(peer, lower, upper, bloom)
} }
} }

View file

@ -41,7 +41,7 @@ func newPeer(host *Whisper, remote *p2p.Peer, rw p2p.MsgReadWriter) Peer {
powRequirement: 0.0, powRequirement: 0.0,
known: set.New(), known: set.New(),
quit: make(chan struct{}), quit: make(chan struct{}),
bloomFilter: makeFullNodeBloom(), bloomFilter: MakeFullNodeBloom(),
fullNode: true, fullNode: true,
}, },
remote, remote,

View file

@ -124,7 +124,7 @@ func newLibP2PPeer(s *LibP2PWhisperServer, w *Whisper, pid peer.ID, rw p2p.MsgRe
powRequirement: 0.0, powRequirement: 0.0,
known: set.New(), known: set.New(),
quit: make(chan struct{}), quit: make(chan struct{}),
bloomFilter: makeFullNodeBloom(), bloomFilter: MakeFullNodeBloom(),
fullNode: true, fullNode: true,
}, },
pid, pid,

View file

@ -20,7 +20,6 @@ import (
"fmt" "fmt"
"math" "math"
"sync" "sync"
"time"
"github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/log"
@ -82,19 +81,19 @@ func (peer *PeerBase) handshakeBase() error {
return err return err
} }
if packet.Code != statusCode { if packet.Code != statusCode {
return fmt.Errorf("peer [%s] sent packet %x before status packet", peer.ID(), packet.Code) return fmt.Errorf("sent packet %x before status packet", packet.Code)
} }
s := rlp.NewStream(packet.Payload, uint64(packet.Size)) s := rlp.NewStream(packet.Payload, uint64(packet.Size))
_, err = s.List() _, err = s.List()
if err != nil { if err != nil {
return fmt.Errorf("peer [%s] sent bad status message: %v", peer.ID(), err) return fmt.Errorf("sent bad status message: %v", err)
} }
peerVersion, err := s.Uint() peerVersion, err := s.Uint()
if err != nil { if err != nil {
return fmt.Errorf("peer [%s] sent bad status message (unable to decode version): %v", peer.ID(), err) return fmt.Errorf("sent bad status message (unable to decode version): %v", err)
} }
if peerVersion != ProtocolVersion { if peerVersion != ProtocolVersion {
return fmt.Errorf("peer [%s]: protocol version mismatch %d != %d", peer.ID(), peerVersion, ProtocolVersion) return fmt.Errorf(": protocol version mismatch %d != %d", peerVersion, ProtocolVersion)
} }
// only version is mandatory, subsequent parameters are optional // only version is mandatory, subsequent parameters are optional
@ -102,7 +101,7 @@ func (peer *PeerBase) handshakeBase() error {
if err == nil { if err == nil {
pow := math.Float64frombits(powRaw) pow := math.Float64frombits(powRaw)
if math.IsInf(pow, 0) || math.IsNaN(pow) || pow < 0.0 { if math.IsInf(pow, 0) || math.IsNaN(pow) || pow < 0.0 {
return fmt.Errorf("peer [%s] sent bad status message: invalid pow", peer.ID()) return fmt.Errorf("sent bad status message: invalid pow")
} }
peer.powRequirement = pow peer.powRequirement = pow
@ -111,14 +110,14 @@ func (peer *PeerBase) handshakeBase() error {
if err == nil { if err == nil {
sz := len(bloom) sz := len(bloom)
if sz != BloomFilterSize && sz != 0 { if sz != BloomFilterSize && sz != 0 {
return fmt.Errorf("peer [%s] sent bad status message: wrong bloom filter size %d", peer.ID(), sz) return fmt.Errorf("sent bad status message: wrong bloom filter size %d", sz)
} }
peer.setBloomFilter(bloom) peer.setBloomFilter(bloom)
} }
} }
if err := <-errc; err != nil { if err := <-errc; err != nil {
return fmt.Errorf("peer [%s] failed to send status packet: %v", peer.ID(), err) return fmt.Errorf("failed to send status packet: %v", err)
} }
return nil return nil
} }

View file

@ -99,6 +99,10 @@ type Whisper struct {
mailServer MailServer // MailServer interface mailServer MailServer // MailServer interface
} }
type DevP2PBridge struct {
*Whisper
}
// New creates a Whisper client ready to communicate through the Ethereum P2P network. // New creates a Whisper client ready to communicate through the Ethereum P2P network.
func New(cfg *Config) *Whisper { func New(cfg *Config) *Whisper {
if cfg == nil { if cfg == nil {
@ -608,7 +612,7 @@ func (whisper *Whisper) Send(envelope *Envelope) error {
// Start implements node.Service, starting the background data propagation thread // Start implements node.Service, starting the background data propagation thread
// of the Whisper protocol. // of the Whisper protocol.
func (whisper *Whisper) Start(WhisperServer) error { func (whisper *Whisper) Start(/* WhisperServer*/ *p2p.Server) error {
log.Info("started whisper v." + ProtocolVersionStr) log.Info("started whisper v." + ProtocolVersionStr)
go whisper.update() go whisper.update()