whisper: Exit api.run when whisper is stopped

This commit is contained in:
Dmitry Shulyak 2018-02-10 18:30:49 +02:00
parent 5cf75a30c1
commit c15bf122e4
2 changed files with 28 additions and 20 deletions

View file

@ -69,9 +69,12 @@ func NewPublicWhisperAPI(w *Whisper) *PublicWhisperAPI {
// this loop deletes filter that have not been used within filterTimeout
func (api *PublicWhisperAPI) run() {
timeout := time.NewTicker(2 * time.Minute)
defer timeout.Stop()
for {
<-timeout.C
select {
case <-api.w.quit:
return
case <-timeout.C:
api.mu.Lock()
for id, lastUsed := range api.lastUsed {
if time.Since(lastUsed).Seconds() >= filterTimeout {
@ -84,6 +87,7 @@ func (api *PublicWhisperAPI) run() {
}
api.mu.Unlock()
}
}
}
// Version returns the Whisper sub-protocol version.

View file

@ -70,9 +70,12 @@ func NewPublicWhisperAPI(w *Whisper) *PublicWhisperAPI {
// this loop deletes filter that have not been used within filterTimeout
func (api *PublicWhisperAPI) run() {
timeout := time.NewTicker(2 * time.Minute)
defer timeout.Stop()
for {
<-timeout.C
select {
case <-api.w.quit:
return
case <-timeout.C:
api.mu.Lock()
for id, lastUsed := range api.lastUsed {
if time.Since(lastUsed).Seconds() >= filterTimeout {
@ -85,6 +88,7 @@ func (api *PublicWhisperAPI) run() {
}
api.mu.Unlock()
}
}
}
// Version returns the Whisper sub-protocol version.