From 9e2f8db257384bc51b7084e60660ac2a191e667d Mon Sep 17 00:00:00 2001 From: Dmitry Shulyak Date: Tue, 19 Feb 2019 09:08:40 +0200 Subject: [PATCH] Send event when envelope was received from a peer (#19) * Send event when envelope was received from a peer * Update event description --- whisperv6/events.go | 4 ++++ whisperv6/whisper.go | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/whisperv6/events.go b/whisperv6/events.go index 380f6d9..b99f580 100644 --- a/whisperv6/events.go +++ b/whisperv6/events.go @@ -13,6 +13,10 @@ const ( EventEnvelopeSent EventType = "envelope.sent" // EventEnvelopeExpired fires when envelop expired EventEnvelopeExpired EventType = "envelope.expired" + // EventEnvelopeReceived is sent once envelope was received from a peer. + // EventEnvelopeReceived must be sent to the feed even if envelope was previously in the cache. + // And event, ideally, should contain information about peer that sent envelope to us. + EventEnvelopeReceived EventType = "envelope.received" // EventBatchAcknowledged is sent when batch of envelopes was acknowleged by a peer. EventBatchAcknowledged EventType = "batch.acknowleged" // EventEnvelopeAvailable fires when envelop is available for filters diff --git a/whisperv6/whisper.go b/whisperv6/whisper.go index 7917bd9..434b95b 100644 --- a/whisperv6/whisper.go +++ b/whisperv6/whisper.go @@ -876,7 +876,6 @@ func (whisper *Whisper) runMessageLoop(p *Peer, rw p2p.MsgReadWriter) error { log.Warn("failed to decode envelopes, peer will be disconnected", "peer", p.peer.ID(), "err", err) return errors.New("invalid envelopes") } - trouble := false for _, env := range envelopes { cached, err := whisper.add(env, whisper.LightClientMode()) @@ -884,6 +883,11 @@ func (whisper *Whisper) runMessageLoop(p *Peer, rw p2p.MsgReadWriter) error { trouble = true log.Error("bad envelope received, peer will be disconnected", "peer", p.peer.ID(), "err", err) } + whisper.envelopeFeed.Send(EnvelopeEvent{ + Event: EventEnvelopeReceived, + Hash: env.Hash(), + Peer: p.peer.ID(), + }) if cached { p.mark(env) }