diff --git a/cmd/wnode/main.go b/cmd/wnode/main.go index 1560ea41ad..5f3e9411ba 100644 --- a/cmd/wnode/main.go +++ b/cmd/wnode/main.go @@ -22,6 +22,7 @@ package main import ( "bufio" "crypto/ecdsa" + crand "crypto/rand" "crypto/sha512" "encoding/binary" "encoding/hex" @@ -87,6 +88,7 @@ var ( asymmetricMode = flag.Bool("asym", false, "use asymmetric encryption") generateKey = flag.Bool("generatekey", false, "generate and show the private key") 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") echoMode = flag.Bool("echo", false, "echo mode: prints some arguments for diagnostics") @@ -106,7 +108,8 @@ var ( argTopic = flag.String("topic", "", "topic in hexadecimal format (e.g. 70a4beef)") 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() { @@ -649,7 +652,6 @@ func messageLoop() { printMessageInfo(msg) reportedOnce = true } - } // All messages are saved upon specifying argSaveDir. // fileExMode only specifies how messages are displayed on the console after they are saved. diff --git a/whisper/mailserver/mailserver.go b/whisper/mailserver/mailserver.go index f8bff7ada7..3e6b6ba61a 100644 --- a/whisper/mailserver/mailserver.go +++ b/whisper/mailserver/mailserver.go @@ -17,7 +17,6 @@ package mailserver import ( - "bytes" "encoding/binary" "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) if ok { - s.processRequest(peer, lower, upper, topic) + s.processRequest(peer, lower, upper, bloom) } } diff --git a/whisper/whisperv6/devp2p_glue.go b/whisper/whisperv6/devp2p_glue.go index 56106481fe..4f2334fd89 100644 --- a/whisper/whisperv6/devp2p_glue.go +++ b/whisper/whisperv6/devp2p_glue.go @@ -41,7 +41,7 @@ func newPeer(host *Whisper, remote *p2p.Peer, rw p2p.MsgReadWriter) Peer { powRequirement: 0.0, known: set.New(), quit: make(chan struct{}), - bloomFilter: makeFullNodeBloom(), + bloomFilter: MakeFullNodeBloom(), fullNode: true, }, remote, diff --git a/whisper/whisperv6/libp2p_glue.go b/whisper/whisperv6/libp2p_glue.go index 304e18919a..878163a742 100644 --- a/whisper/whisperv6/libp2p_glue.go +++ b/whisper/whisperv6/libp2p_glue.go @@ -124,7 +124,7 @@ func newLibP2PPeer(s *LibP2PWhisperServer, w *Whisper, pid peer.ID, rw p2p.MsgRe powRequirement: 0.0, known: set.New(), quit: make(chan struct{}), - bloomFilter: makeFullNodeBloom(), + bloomFilter: MakeFullNodeBloom(), fullNode: true, }, pid, diff --git a/whisper/whisperv6/peer.go b/whisper/whisperv6/peer.go index 57abbe4afa..6d295b48b1 100644 --- a/whisper/whisperv6/peer.go +++ b/whisper/whisperv6/peer.go @@ -20,7 +20,6 @@ import ( "fmt" "math" "sync" - "time" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/log" @@ -82,19 +81,19 @@ func (peer *PeerBase) handshakeBase() error { return err } 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)) _, err = s.List() 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() 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 { - 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 @@ -102,7 +101,7 @@ func (peer *PeerBase) handshakeBase() error { if err == nil { pow := math.Float64frombits(powRaw) 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 @@ -111,14 +110,14 @@ func (peer *PeerBase) handshakeBase() error { if err == nil { sz := len(bloom) 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) } } 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 } diff --git a/whisper/whisperv6/whisper.go b/whisper/whisperv6/whisper.go index 92344f4e8b..f2bded100b 100644 --- a/whisper/whisperv6/whisper.go +++ b/whisper/whisperv6/whisper.go @@ -99,6 +99,10 @@ type Whisper struct { mailServer MailServer // MailServer interface } +type DevP2PBridge struct { + *Whisper +} + // New creates a Whisper client ready to communicate through the Ethereum P2P network. func New(cfg *Config) *Whisper { if cfg == nil { @@ -608,7 +612,7 @@ func (whisper *Whisper) Send(envelope *Envelope) error { // Start implements node.Service, starting the background data propagation thread // of the Whisper protocol. -func (whisper *Whisper) Start(WhisperServer) error { +func (whisper *Whisper) Start(/* WhisperServer*/ *p2p.Server) error { log.Info("started whisper v." + ProtocolVersionStr) go whisper.update()