Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 19 additions & 1 deletion turbo/jsonrpc/eth_receipts.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,16 @@ func (api *BaseAPI) getReceipts(ctx context.Context, tx kv.Tx, block *types.Bloc
}

// GetLogs implements eth_getLogs. Returns an array of logs matching a given filter object.
func (api *APIImpl) GetLogs(ctx context.Context, crit filters.FilterCriteria) (types.Logs, error) {
func (api *APIImpl) GetLogs(ctx context.Context, crit filters.FilterCriteria) (retlog types.Logs, err error) {
// Add panic recovery to prevent crashes
defer func() {
if r := recover(); r != nil {
log.Error("GetLogs panic recovered", "error", r)
retlog = nil
err = fmt.Errorf("GetLogs panic recovered: %v", r)
}
}()

var begin, end uint64
logs := types.Logs{}

Expand All @@ -107,6 +116,15 @@ func (api *APIImpl) GetLogs(ctx context.Context, crit filters.FilterCriteria) (t
if err != nil {
return nil, err
}
if block != nil && block.HeaderNoCopy() == nil {
log.Error("block header is nil", "block hash", *crit.BlockHash)
return nil, fmt.Errorf("block header is nil, block hash: %x", *crit.BlockHash)
}
if block.HeaderNoCopy().Number == nil {
log.Error("block header number is nil", "block hash", *crit.BlockHash)
return nil, fmt.Errorf("block header number is nil, block hash: %x", *crit.BlockHash)
}

header, err := api._blockReader.HeaderByNumber(ctx, tx, block.NumberU64())
if err != nil {
return nil, err
Expand Down