Bläddra i källkod

Merge pull request #16176 from gluk256/255-refactoring

whisper: filters no longer get removed after a while
Guillaume Ballet 7 år sedan
förälder
incheckning
423c8bb1d8
3 ändrade filer med 3 tillägg och 51 borttagningar
  1. 0 23
      whisper/whisperv5/api.go
  2. 2 24
      whisper/whisperv6/api.go
  3. 1 4
      whisper/whisperv6/whisper.go

+ 0 - 23
whisper/whisperv5/api.go

@@ -60,32 +60,9 @@ func NewPublicWhisperAPI(w *Whisper) *PublicWhisperAPI {
 		w:        w,
 		lastUsed: make(map[string]time.Time),
 	}
-
-	go api.run()
 	return api
 }
 
-// run the api event loop.
-// this loop deletes filter that have not been used within filterTimeout
-func (api *PublicWhisperAPI) run() {
-	timeout := time.NewTicker(2 * time.Minute)
-	for {
-		<-timeout.C
-
-		api.mu.Lock()
-		for id, lastUsed := range api.lastUsed {
-			if time.Since(lastUsed).Seconds() >= filterTimeout {
-				delete(api.lastUsed, id)
-				if err := api.w.Unsubscribe(id); err != nil {
-					log.Error("could not unsubscribe whisper filter", "error", err)
-				}
-				log.Debug("delete whisper filter (timeout)", "id", id)
-			}
-		}
-		api.mu.Unlock()
-	}
-}
-
 // Version returns the Whisper sub-protocol version.
 func (api *PublicWhisperAPI) Version(ctx context.Context) string {
 	return ProtocolVersionStr

+ 2 - 24
whisper/whisperv6/api.go

@@ -61,32 +61,9 @@ func NewPublicWhisperAPI(w *Whisper) *PublicWhisperAPI {
 		w:        w,
 		lastUsed: make(map[string]time.Time),
 	}
-
-	go api.run()
 	return api
 }
 
-// run the api event loop.
-// this loop deletes filter that have not been used within filterTimeout
-func (api *PublicWhisperAPI) run() {
-	timeout := time.NewTicker(2 * time.Minute)
-	for {
-		<-timeout.C
-
-		api.mu.Lock()
-		for id, lastUsed := range api.lastUsed {
-			if time.Since(lastUsed).Seconds() >= filterTimeout {
-				delete(api.lastUsed, id)
-				if err := api.w.Unsubscribe(id); err != nil {
-					log.Error("could not unsubscribe whisper filter", "error", err)
-				}
-				log.Debug("delete whisper filter (timeout)", "id", id)
-			}
-		}
-		api.mu.Unlock()
-	}
-}
-
 // Version returns the Whisper sub-protocol version.
 func (api *PublicWhisperAPI) Version(ctx context.Context) string {
 	return ProtocolVersionStr
@@ -219,7 +196,8 @@ func (api *PublicWhisperAPI) DeleteSymKey(ctx context.Context, id string) bool {
 	return api.w.DeleteSymKey(id)
 }
 
-// MakeLightClient turns the node into light client, which does not forward any incoming messages.
+// MakeLightClient turns the node into light client, which does not forward
+// any incoming messages, and sends only messages originated in this node.
 func (api *PublicWhisperAPI) MakeLightClient(ctx context.Context) bool {
 	api.w.lightClient = true
 	return api.w.lightClient

+ 1 - 4
whisper/whisperv6/whisper.go

@@ -590,10 +590,7 @@ func (whisper *Whisper) Unsubscribe(id string) error {
 // network in the coming cycles.
 func (whisper *Whisper) Send(envelope *Envelope) error {
 	ok, err := whisper.add(envelope, false)
-	if err != nil {
-		return err
-	}
-	if !ok {
+	if err == nil && !ok {
 		return fmt.Errorf("failed to add envelope")
 	}
 	return err