Bug 31104: Put each link on a separate header
authorTomas Cohen Arazi <tomascohen@theke.io>
Wed, 6 Jul 2022 19:27:23 +0000 (16:27 -0300)
committerTomas Cohen Arazi <tomascohen@theke.io>
Mon, 11 Jul 2022 21:19:15 +0000 (18:19 -0300)
commit2f668f0b187c4a421b1ffa862e1c40553e8ab786
treedce6729e1aea531b089710ef396efdcb0f069d56
parent743731949db14eac858c6cdced4bb471d1da879b
Bug 31104: Put each link on a separate header

This patch makes the Pagination helper put each Link entry on the
response headers on a separate header. In practice, this leads to
shorter headers and will avoid apache default/reasonable limits.

To test:
1. Open the patron search page
2. Open the koha logs:
   $ tail -f /var/log/koha/kohadev/*.log
3. On the 'Search for patron' input, use a really long string, like
   'superlongstringthatistoolongforapacheyeahsuperlong'
=> SUCCESS: There's no user with an attribute with that content :-D
=> FAIL: You get an error like (28)No space left on device: [client 127.0.0.1:60330] AH10124: header size is over the limit allowed by ResponseFieldSize (8192 bytes). Bad response header: 'Link:...'
4. Apply this patch
5. Restart all:
   $ restart_all
6. Repeat 2 and 3
=> SUCCESS: No results
=> SUCCESS: No error in the logs
7. Run:
   $ kshell
  k$ prove t/Koha/REST/Plugin/Pagination.t \
           t/db_dependent/api/v1/*.t
=> SUCCESS: Tests pass!

Note 1: The Link header is expected to be in CSV format, which is
usually the way libraries treat repeated headers anyway.

Note 2: Apache is not rejecting the response, just stripping out the
'bad header'. So this is not a critical issue.

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Michal Urban <michalurban177@gmail.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Koha/REST/Plugin/Pagination.pm