diff --git a/rpc/core/pipe.go b/rpc/core/pipe.go index e4bb5a29..8330b345 100644 --- a/rpc/core/pipe.go +++ b/rpc/core/pipe.go @@ -125,6 +125,10 @@ func SetEventBus(b *types.EventBus) { } func validatePage(page, perPage, totalCount int) int { + if perPage < 1 { + return 1 + } + pages := ((totalCount - 1) / perPage) + 1 if page < 1 { page = 1 diff --git a/rpc/core/pipe_test.go b/rpc/core/pipe_test.go index a33e17cf..225e3649 100644 --- a/rpc/core/pipe_test.go +++ b/rpc/core/pipe_test.go @@ -15,6 +15,8 @@ func TestPaginationPage(t *testing.T) { page int newPage int }{ + {0, 0, 1, 1}, + {0, 10, 0, 1}, {0, 10, 1, 1}, {0, 10, 2, 1}, diff --git a/rpc/core/tx.go b/rpc/core/tx.go index 615136a9..2e27969c 100644 --- a/rpc/core/tx.go +++ b/rpc/core/tx.go @@ -189,8 +189,8 @@ func TxSearch(query string, prove bool, page, perPage int) (*ctypes.ResultTxSear } totalCount := len(results) - page = validatePage(page, perPage, totalCount) perPage = validatePerPage(perPage) + page = validatePage(page, perPage, totalCount) skipCount := (page - 1) * perPage apiResults := make([]*ctypes.ResultTx, cmn.MinInt(perPage, totalCount-skipCount))