From 3e10f30bcafa62422330fbf57accd19a1fac90c1 Mon Sep 17 00:00:00 2001 From: lash Date: Tue, 10 Apr 2018 21:07:04 +0200 Subject: [PATCH] swarm/pss: Move rawtopic test before decryption attempt --- swarm/pss/pss.go | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/swarm/pss/pss.go b/swarm/pss/pss.go index d2eeff5189..95cacd7da5 100644 --- a/swarm/pss/pss.go +++ b/swarm/pss/pss.go @@ -361,6 +361,10 @@ func (self *Pss) process(pssmsg *PssMsg) bool { envelope := pssmsg.Payload psstopic := Topic(envelope.Topic) + if self.allowRaw && psstopic == rawTopic { + self.executeHandlers(rawTopic, envelope.Data, nil, false, "") + return true + } if len(envelope.AESNonce) > 0 { // detect symkey msg according to whisperv5/envelope.go:OpenSymmetric keyFunc = self.processSym @@ -370,9 +374,6 @@ func (self *Pss) process(pssmsg *PssMsg) bool { } recvmsg, keyid, from, err = keyFunc(envelope) if err != nil { - if self.allowRaw { - self.executeHandlers(rawTopic, envelope.Data, nil, false, "") - } return false } @@ -382,9 +383,6 @@ func (self *Pss) process(pssmsg *PssMsg) bool { return false } } - if psstopic == rawTopic { - return false - } self.executeHandlers(psstopic, recvmsg.Payload, from, asymmetric, keyid) return true @@ -609,13 +607,11 @@ func (self *Pss) cleanKeys() (count int) { ///////////////////////////////////////////////////////////////////// func (self *Pss) enqueue(msg *PssMsg) bool { - self.fwdPoolMu.Lock() - defer self.fwdPoolMu.Unlock() - if self.outboxCounter == self.outboxCapacity { - return false + select { + case self.outbox <- msg: + return true + default: } - self.outboxCounter++ - self.outbox <- msg return true } @@ -810,11 +806,6 @@ func (self *Pss) forward(msg *PssMsg) error { } } - // remove from queue - self.fwdPoolMu.Lock() - self.outboxCounter-- - self.fwdPoolMu.Unlock() - // cache the message self.addFwdCache(msg) return nil