mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-18 09:53:48 +00:00
whisper: fix issues after rebase
This commit is contained in:
parent
2205d77508
commit
10e426d6f2
6 changed files with 19 additions and 15 deletions
|
|
@ -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")
|
||||||
|
|
||||||
|
|
@ -106,7 +108,8 @@ var (
|
||||||
argTopic = flag.String("topic", "", "topic in hexadecimal format (e.g. 70a4beef)")
|
argTopic = flag.String("topic", "", "topic in hexadecimal format (e.g. 70a4beef)")
|
||||||
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.
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue