Commit 613364b7 authored by Morten Linderud's avatar Morten Linderud 🏄 Committed by Lukas Fleischer
Browse files

pkg_search_page: Limit number of results on package search



The current package search query is quite poorly optimized and becomes a
resource hog when the offsets gets large enough. This DoSes the service.

A quick fix is to just ensure we have some limit to the number of hits
we return. The current hardcoding of 2500 is based on the following:

    * 250 hits per page max
    * 10 pages

We can maybe consider having it lower, but it seems easier to just have
this a multiple of 250 in the first iteration.
Signed-off-by: Morten Linderud's avatarMorten Linderud <morten@linderud.pw>
Signed-off-by: Lukas Fleischer's avatarLukas Fleischer <lfleischer@archlinux.org>
parent c4f4ac51
......@@ -619,7 +619,7 @@ function pkg_search_page($params, $show_headers=true, $SID="") {
/* Sanitize paging variables. */
if (isset($params['O'])) {
$params['O'] = max(intval($params['O']), 0);
$params['O'] = bound(intval($params['O']), 0, 2500);
} else {
$params['O'] = 0;
}
......@@ -771,9 +771,8 @@ function pkg_search_page($params, $show_headers=true, $SID="") {
$result_t = $dbh->query($q_total);
if ($result_t) {
$row = $result_t->fetch(PDO::FETCH_NUM);
$total = $row[0];
}
else {
$total = min($row[0], 2500);
} else {
$total = 0;
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment