diff --git a/eth/filters/api.go b/eth/filters/api.go index 58baf2c3aa8..b69442163f0 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() @@ -231,6 +232,7 @@ func (api *FilterAPI) NewBlockFilter() rpc.ID { api.filtersMu.Lock() delete(api.filters, headerSub.ID) api.filtersMu.Unlock() + headerSub.Unsubscribe() return } } @@ -417,6 +419,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 4fd3df74285..fb61cd3906e 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 {