diff --git a/eth/filters/api.go b/eth/filters/api.go index a3ed00f33b..de70e5e310 100644 --- a/eth/filters/api.go +++ b/eth/filters/api.go @@ -103,6 +103,7 @@ func (api *FilterAPI) timeoutLoop(timeout time.Duration) { select { case <-ticker.C: case <-api.events.chainSub.Err(): + api.events.chainSub.Unsubscribe() return } api.filtersMu.Lock() @@ -230,6 +231,7 @@ func (api *FilterAPI) NewBlockFilter() rpc.ID { api.filtersMu.Lock() delete(api.filters, headerSub.ID) api.filtersMu.Unlock() + headerSub.Unsubscribe() return } } @@ -415,6 +417,7 @@ func (api *FilterAPI) NewFilter(crit FilterCriteria) (rpc.ID, error) { api.filtersMu.Lock() delete(api.filters, logsSub.ID) api.filtersMu.Unlock() + logsSub.Unsubscribe() return } } diff --git a/eth/gasprice/gasprice.go b/eth/gasprice/gasprice.go index 4fd3df7428..fb61cd3906 100644 --- a/eth/gasprice/gasprice.go +++ b/eth/gasprice/gasprice.go @@ -123,6 +123,7 @@ func NewOracle(backend OracleBackend, params Config, startPrice *big.Int) *Oracl sub := backend.SubscribeChainHeadEvent(headEvent) if sub != nil { // the gasprice testBackend doesn't support subscribing to head events go func() { + defer sub.Unsubscribe() var lastHead common.Hash for { select {