Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F85827841
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Authored By
Unknown
Size
2 KB
Referenced Files
None
Subscribers
None
View Options
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
Details
Attached
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)
Attached To
Mode
rPUBE pleroma-upstream
Attached
Detach File
Event Timeline