/phoenix/live_dashboard -> /pleroma/live_dashboard would work
/phoenix/live_dashboard/ecto_stats -> /pleroma/live_dashboard/ecto_stats
would not work and instead reply with FE.
Ranch listener wasn't being properly stopped when the Gopher GenServer
received a shutdown message due Restarter rebooting Pleroma to apply
ConfigDB configuration (originating from
Config.TransferTask.load_and_update_env/2) when ConfigDB is enabled.
Handle by trapping exits in the GenServer, which causes the terminate/2
function to be called and the Ranch listener to be stopped from there.
23:22:29.871 [error] GenServer Restarter.Pleroma terminating
** (MatchError) no match of right hand side value:
{:error,
{{:shutdown,
{:failed_to_start_child, Pleroma.Gopher.Server,
{{:badmatch, {:error, {:already_started, #PID<0.4801.0>}}},
[
{Pleroma.Gopher.Server, :init, 1,
[file: ~c"lib/pleroma/gopher/server.ex", line: 25]},
{:gen_server, :init_it, 2, [file: ~c"gen_server.erl", line: 2276]},
{:gen_server, :init_it, 6, [file: ~c"gen_server.erl", line: 2236]},
{:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 333]}
]}}}, {Pleroma.Application, :start, [:normal, []]}}}
(restarter 0.1.0) lib/pleroma.ex:104: Restarter.Pleroma.do_restart/1
(restarter 0.1.0) lib/pleroma.ex:96: Restarter.Pleroma.handle_cast/2
(stdlib 7.2) gen_server.erl:2460: :gen_server.try_handle_cast/3
(stdlib 7.2) gen_server.erl:2418: :gen_server.handle_msg/3
(stdlib 7.2) proc_lib.erl:333: :proc_lib.init_p_do_apply/3
Last message: {:"$gen_cast", {:after_boot, :dev}}
State: %{rebooted: false, need_reboot: false, after_boot: false}
Phoenix 1.8 requires a View module with put_layout so can't set it that early.
It was introduced in 2019 with
commit 1097ce6d9f
but nothing seems to provide app.html (anymore?) and it would likely
better be set by something like OAuthController / OAuthView.
Drop follow_redirect/force_redirect from the HTTP options used when warming MediaProxy, relying on Tesla middleware instead (Hackney redirect handling can crash behind CONNECT proxies).
Also add a regression assertion in the policy test and document the upstream Hackney issues in ReverseProxy redirect handling.
Exercises Pleroma.ReverseProxy.Client.Hackney with follow_redirect enabled behind an HTTPS CONNECT proxy, ensuring the client follows a relative redirect and can stream the final body.
Also ensure we always pass an absolute URL to Hackney when parsing a redirect response
(cherry picked from commit 00ac6bce8d244eec7e2460358296619e5cacba6b)
Hackney 1.25 crashes when follow_redirect is enabled behind an HTTPS CONNECT proxy and the Location header is relative (hackney_http_connect transport).
This test demonstrates the failure and verifies Tesla-level redirects work when hackney redirects are disabled.
Reproduces the Hackney 1.25 pooled redirect cleanup issue which can surface as :req_not_found when the adapter returns a Ref and the body is later fetched.
Hackney 1.25.x has redirect handling issues behind CONNECT proxies and with pools.
Disable hackney-level redirects and rely on Tesla.Middleware.FollowRedirects instead.
Also default to with_body: true so redirects can be followed reliably.