Page MenuHomePhorge

No OneTemporary

Authored By
Unknown
Size
2 KB
Referenced Files
None
Subscribers
None
diff --git a/changelog.d/empty-proxy-url.fix b/changelog.d/empty-proxy-url.fix
new file mode 100644
index 000000000..4dd547aba
--- /dev/null
+++ b/changelog.d/empty-proxy-url.fix
@@ -0,0 +1 @@
+HTTP: treat an empty proxy_url as no proxy; with Hackney 4 it made every outgoing request fail
diff --git a/lib/pleroma/http/adapter_helper.ex b/lib/pleroma/http/adapter_helper.ex
index 4f0e23f20..fa1d1ab54 100644
--- a/lib/pleroma/http/adapter_helper.ex
+++ b/lib/pleroma/http/adapter_helper.ex
@@ -20,8 +20,9 @@ defmodule Pleroma.HTTP.AdapterHelper do
@callback options(keyword(), URI.t()) :: keyword()
+ # AdminFE stores an empty proxy field as "", which means no proxy.
@spec format_proxy(String.t() | tuple() | nil) :: proxy() | nil
- def format_proxy(nil), do: nil
+ def format_proxy(proxy) when proxy in [nil, ""], do: nil
def format_proxy(proxy_url) do
case parse_proxy(proxy_url) do
@@ -32,7 +33,7 @@ defmodule Pleroma.HTTP.AdapterHelper do
end
@spec maybe_add_proxy(keyword(), proxy() | nil) :: keyword()
- def maybe_add_proxy(opts, nil), do: opts
+ def maybe_add_proxy(opts, proxy) when proxy in [nil, ""], do: opts
def maybe_add_proxy(opts, proxy), do: Keyword.put_new(opts, :proxy, proxy)
@doc """
diff --git a/test/pleroma/http/adapter_helper/hackney_test.exs b/test/pleroma/http/adapter_helper/hackney_test.exs
index 4a31ffb07..ecfd2323d 100644
--- a/test/pleroma/http/adapter_helper/hackney_test.exs
+++ b/test/pleroma/http/adapter_helper/hackney_test.exs
@@ -58,6 +58,13 @@ defmodule Pleroma.HTTP.AdapterHelper.HackneyTest do
{:socks5, ~c"::1", 9050}
end
+ # AdminFE stores an empty field as "", and Hackney 4 fails every request with it.
+ test "ignores an empty proxy_url", %{uri: uri} do
+ clear_config([:http, :proxy_url], "")
+
+ refute Keyword.has_key?(Hackney.options([], uri), :proxy)
+ end
+
test "respect connection opts and no proxy", %{uri: uri} do
opts = Hackney.options([a: 2, b: 1], uri)
diff --git a/test/pleroma/http/adapter_helper_test.exs b/test/pleroma/http/adapter_helper_test.exs
index cc0e24167..e75710d0d 100644
--- a/test/pleroma/http/adapter_helper_test.exs
+++ b/test/pleroma/http/adapter_helper_test.exs
@@ -12,6 +12,12 @@ defmodule Pleroma.HTTP.AdapterHelperTest do
assert AdapterHelper.format_proxy(nil) == nil
end
+ test "with an empty string" do
+ assert ExUnit.CaptureLog.capture_log(fn ->
+ assert AdapterHelper.format_proxy("") == nil
+ end) == ""
+ end
+
test "with string" do
assert AdapterHelper.format_proxy("127.0.0.1:8123") == {{127, 0, 0, 1}, 8123}
end

File Metadata

Mime Type
text/x-diff
Expires
Fri, Oct 30, 11:39 PM (18 h, 18 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1800748
Default Alt Text
(2 KB)

Event Timeline