feat(http): make Gun the default HTTP client
Hackney 4 reads every response completely before Pleroma can check its size, so max_body no longer limits downloads or memory there; Gun stops at the limit. Document the Hackney limitation for those who switch back.
This commit is contained in:
parent
1be50ed28b
commit
b2e4580a81
4 changed files with 26 additions and 1 deletions
1
changelog.d/gun-default.change
Normal file
1
changelog.d/gun-default.change
Normal file
|
|
@ -0,0 +1 @@
|
|||
Gun is now the default HTTP client instead of Hackney
|
||||
|
|
@ -161,7 +161,7 @@ config :mime, :types, %{
|
|||
"image/apng" => ["apng"]
|
||||
}
|
||||
|
||||
config :tesla, adapter: Tesla.Adapter.Hackney
|
||||
config :tesla, adapter: Tesla.Adapter.Gun
|
||||
|
||||
# Hackney 4 shares one HTTP/2 connection per host, and closing one response
|
||||
# (as the media proxy does) stops it for every other stream on it.
|
||||
|
|
|
|||
|
|
@ -541,6 +541,15 @@ Available caches:
|
|||
|
||||
## HTTP client
|
||||
|
||||
Pleroma uses [Gun](https://github.com/ninenines/gun) for outgoing HTTP requests. To use Hackney instead:
|
||||
|
||||
```elixir
|
||||
config :tesla, adapter: Tesla.Adapter.Hackney
|
||||
```
|
||||
|
||||
!!! note
|
||||
With Hackney, size limits for fetched responses (for example for link previews) are checked only after Hackney has read the whole response. They limit what Pleroma keeps, not how much it downloads or holds in memory. Gun stops reading at the limit.
|
||||
|
||||
### :http
|
||||
|
||||
* `proxy_url`: an upstream proxy to fetch posts and/or media with, (default: `nil`)
|
||||
|
|
@ -550,6 +559,8 @@ Available caches:
|
|||
|
||||
### :hackney_pools
|
||||
|
||||
*For `hackney` adapter*
|
||||
|
||||
Advanced. Tweaks Hackney (http client) connections pools.
|
||||
|
||||
There's three pools used:
|
||||
|
|
|
|||
13
test/pleroma/http/default_adapter_test.exs
Normal file
13
test/pleroma/http/default_adapter_test.exs
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
# Pleroma: A lightweight social networking server
|
||||
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||
# SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
defmodule Pleroma.HTTP.DefaultAdapterTest do
|
||||
use ExUnit.Case, async: true
|
||||
|
||||
# The test environment uses Tesla.Mock, and config.exs imports the config
|
||||
# of the current Mix env, so check the shipped default in the file itself.
|
||||
test "Gun is the default HTTP client" do
|
||||
assert File.read!("config/config.exs") =~ ~r/^config :tesla, adapter: Tesla.Adapter.Gun$/m
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue