logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://anongit.hacktivis.me/git/pleroma.git/
commit: 004ea90b29fec5e7b7b53b40f6acb6455a2340db
parent 9445ab9096b7a69200e3c1f8bdb3befdc019a6e9
Author: Phantasm <phantasm@centrum.cz>
Date:   Tue, 23 Sep 2025 22:55:54 +0200

MediaProxy: Fix 424 caused by inconsistent %-encoding from remote instances

Notably this would fail to redirect to original proxied file when
preview generation criteria haven't been met.

Diffstat:

Mlib/pleroma/web/media_proxy.ex8++++++++
1 file changed, 8 insertions(+), 0 deletions(-)

diff --git a/lib/pleroma/web/media_proxy.ex b/lib/pleroma/web/media_proxy.ex @@ -5,6 +5,7 @@ defmodule Pleroma.Web.MediaProxy do alias Pleroma.Config alias Pleroma.Helpers.UriHelper + alias Pleroma.HTTP alias Pleroma.Upload alias Pleroma.Web.Endpoint alias Pleroma.Web.MediaProxy.Invalidation @@ -99,13 +100,20 @@ defmodule Pleroma.Web.MediaProxy do {base64, sig64} end + # The URL coming into MediaProxy from the outside might have wrong %-encoding + # (like older Pleroma versions) + # This would cause an inconsistency with the encoded URL here and the requested + # URL fixed with Pleroma.Tesla.Middleware.EncodeUrl. + # End result is a failing HEAD request in Pleroma.Web.MediaProxy.MediaProxyController.handle_preview/2 def encode_url(url) do + url = HTTP.encode_url(url) {base64, sig64} = base64_sig64(url) build_url(sig64, base64, filename(url)) end def encode_preview_url(url, preview_params \\ []) do + url = HTTP.encode_url(url) {base64, sig64} = base64_sig64(url) build_preview_url(sig64, base64, filename(url), preview_params)