aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Pitcock <nenolod@dereferenced.org>2018-08-24 20:01:13 +0000
committerWilliam Pitcock <nenolod@dereferenced.org>2018-08-24 20:04:50 +0000
commit290798b8215c2f61ad6e6ccb5463ce599486f2a5 (patch)
tree72ef646c15a2ff01ab23ef986b3d7d748988012a
parentbe7a6db1f54a033afb7cb564f9cf0c9bdafe5055 (diff)
downloadpleroma-290798b8215c2f61ad6e6ccb5463ce599486f2a5.tar.gz
http: fix TLS server name indication
by default, hackney only sent TLS server name indication if TLS was locked to TLS 1.2. since there are many instances out there not speaking TLS 1.2, it is not acceptable to lock SNI to TLS 1.2. closes #261
-rw-r--r--lib/pleroma/http/http.ex25
1 files changed, 24 insertions, 1 deletions
diff --git a/lib/pleroma/http/http.ex b/lib/pleroma/http/http.ex
index 84f34eb4a..c19bccf60 100644
--- a/lib/pleroma/http/http.ex
+++ b/lib/pleroma/http/http.ex
@@ -1,5 +1,23 @@
defmodule Pleroma.HTTP do
- use HTTPoison.Base
+ require HTTPoison
+
+ def request(method, url, body \\ "", headers \\ [], options \\ []) do
+ options =
+ process_request_options(options)
+ |> process_sni_options(url)
+
+ HTTPoison.request(method, url, body, headers, options)
+ end
+
+ defp process_sni_options(options, url) do
+ uri = URI.parse(url)
+ host = uri.host |> to_charlist()
+
+ case uri.scheme do
+ "https" -> options ++ [ssl: [server_name_indication: host]]
+ _ -> options
+ end
+ end
def process_request_options(options) do
config = Application.get_env(:pleroma, :http, [])
@@ -10,4 +28,9 @@ defmodule Pleroma.HTTP do
_ -> options ++ [proxy: proxy]
end
end
+
+ def get(url, headers \\ [], options \\ []), do: request(:get, url, "", headers, options)
+
+ def post(url, body, headers \\ [], options \\ []),
+ do: request(:post, url, body, headers, options)
end