diff options
author | Vlad <gluk256@gmail.com> | 2018-02-23 18:10:28 +0800 |
---|---|---|
committer | Vlad <gluk256@gmail.com> | 2018-02-23 18:10:28 +0800 |
commit | d7b4b40cb69af0166e24f91cac729d7c07ae65c6 (patch) | |
tree | e2d913c9082d09363d28245777e1d1d8569bee40 /whisper/whisperv6/whisper.go | |
parent | a1984ce727642b1989657b9eb430562d47f89c70 (diff) | |
download | go-tangerine-d7b4b40cb69af0166e24f91cac729d7c07ae65c6.tar go-tangerine-d7b4b40cb69af0166e24f91cac729d7c07ae65c6.tar.gz go-tangerine-d7b4b40cb69af0166e24f91cac729d7c07ae65c6.tar.bz2 go-tangerine-d7b4b40cb69af0166e24f91cac729d7c07ae65c6.tar.lz go-tangerine-d7b4b40cb69af0166e24f91cac729d7c07ae65c6.tar.xz go-tangerine-d7b4b40cb69af0166e24f91cac729d7c07ae65c6.tar.zst go-tangerine-d7b4b40cb69af0166e24f91cac729d7c07ae65c6.zip |
whisper: light client mode introduced
Diffstat (limited to 'whisper/whisperv6/whisper.go')
-rw-r--r-- | whisper/whisperv6/whisper.go | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/whisper/whisperv6/whisper.go b/whisper/whisperv6/whisper.go index 600f9cb28..e0ed00bb5 100644 --- a/whisper/whisperv6/whisper.go +++ b/whisper/whisperv6/whisper.go @@ -82,6 +82,8 @@ type Whisper struct { syncAllowance int // maximum time in seconds allowed to process the whisper-related messages + lightClient bool // indicates is this node is pure light client (does not forward any messages) + statsMu sync.Mutex // guard stats stats Statistics // Statistics of whisper node @@ -587,7 +589,7 @@ func (whisper *Whisper) Unsubscribe(id string) error { // Send injects a message into the whisper send queue, to be distributed in the // network in the coming cycles. func (whisper *Whisper) Send(envelope *Envelope) error { - ok, err := whisper.add(envelope) + ok, err := whisper.add(envelope, false) if err != nil { return err } @@ -673,7 +675,7 @@ func (whisper *Whisper) runMessageLoop(p *Peer, rw p2p.MsgReadWriter) error { trouble := false for _, env := range envelopes { - cached, err := whisper.add(env) + cached, err := whisper.add(env, whisper.lightClient) if err != nil { trouble = true log.Error("bad envelope received, peer will be disconnected", "peer", p.peer.ID(), "err", err) @@ -746,7 +748,8 @@ func (whisper *Whisper) runMessageLoop(p *Peer, rw p2p.MsgReadWriter) error { // add inserts a new envelope into the message pool to be distributed within the // whisper network. It also inserts the envelope into the expiration pool at the // appropriate time-stamp. In case of error, connection should be dropped. -func (whisper *Whisper) add(envelope *Envelope) (bool, error) { +// param isP2P indicates whether the message is peer-to-peer (should not be forwarded). +func (whisper *Whisper) add(envelope *Envelope, isP2P bool) (bool, error) { now := uint32(time.Now().Unix()) sent := envelope.Expiry - envelope.TTL @@ -811,7 +814,7 @@ func (whisper *Whisper) add(envelope *Envelope) (bool, error) { whisper.statsMu.Lock() whisper.stats.memoryUsed += envelope.size() whisper.statsMu.Unlock() - whisper.postEvent(envelope, false) // notify the local node about the new message + whisper.postEvent(envelope, isP2P) // notify the local node about the new message if whisper.mailServer != nil { whisper.mailServer.Archive(envelope) } |