diff --git a/quai/filters/filter_system.go b/quai/filters/filter_system.go index b45bab424..2f4d011c0 100644 --- a/quai/filters/filter_system.go +++ b/quai/filters/filter_system.go @@ -352,7 +352,10 @@ func (es *EventSystem) handleLogs(filters filterIndex, ev []*types.Log) { } matchedLogs := filterLogs(ev, f.logsCrit.FromBlock, f.logsCrit.ToBlock, addresses, f.logsCrit.Topics) if len(matchedLogs) > 0 { - f.logs <- matchedLogs + select { + case f.logs <- matchedLogs: + default: + } } } } @@ -371,7 +374,10 @@ func (es *EventSystem) handlePendingLogs(filters filterIndex, ev []*types.Log) { } matchedLogs := filterLogs(ev, nil, f.logsCrit.ToBlock, addresses, f.logsCrit.Topics) if len(matchedLogs) > 0 { - f.logs <- matchedLogs + select { + case f.logs <- matchedLogs: + default: + } } } } @@ -387,7 +393,10 @@ func (es *EventSystem) handleRemovedLogs(filters filterIndex, ev core.RemovedLog } matchedLogs := filterLogs(ev.Logs, f.logsCrit.FromBlock, f.logsCrit.ToBlock, addresses, f.logsCrit.Topics) if len(matchedLogs) > 0 { - f.logs <- matchedLogs + select { + case f.logs <- matchedLogs: + default: + } } } } @@ -398,19 +407,28 @@ func (es *EventSystem) handleTxsEvent(filters filterIndex, ev core.NewTxsEvent) hashes = append(hashes, tx.Hash()) } for _, f := range filters[PendingTransactionsSubscription] { - f.hashes <- hashes + select { + case f.hashes <- hashes: + default: + } } } func (es *EventSystem) handleChainEvent(filters filterIndex, ev core.ChainEvent) { for _, f := range filters[BlocksSubscription] { - f.headers <- ev.Block + select { + case f.headers <- ev.Block: + default: + } } } func (es *EventSystem) handleUnlocksEvent(filters filterIndex, ev core.UnlocksEvent) { for _, f := range filters[UnlocksSubscription] { - f.unlocks <- ev + select { + case f.unlocks <- ev: + default: + } } }