diff options
author | Ludovic Courtès <ludo@gnu.org> | 2021-03-27 18:39:28 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2021-03-27 22:52:51 +0100 |
commit | 45fce38fb0b6c6796906149ade145b8d3594c1c6 (patch) | |
tree | dc838d1820abe2f7685d0f35b5352d6ca6544c1d /guix.scm | |
parent | 3f4a71a44efb2b1a2a5c994598021b441aada7a3 (diff) | |
download | guix-45fce38fb0b6c6796906149ade145b8d3594c1c6.tar guix-45fce38fb0b6c6796906149ade145b8d3594c1c6.tar.gz |
http-client: 'http-multiple-get' is tail-recursive again.
Fixes <https://bugs.gnu.org/47283>.
Commit 205833b72c5517915a47a50dbe28e7024dc74e57 made 'http-multiple-get'
non-tail-recursive. Each recursive call would install an exception
handler. As the number of iterations grows beyond 1,000, quadratic
complexity of 'raise-exception' would show and we'd spend most of our
time there.
* guix/http-client.scm (false-if-networking-error): New macro.
(http-multiple-get): Use it around 'write-request' and 'put-bytevector'
calls, and around 'read-response' call, in lieu of the inline 'catch'
forms.
Diffstat (limited to 'guix.scm')
0 files changed, 0 insertions, 0 deletions