Transmogrifier: Remove handling of orphaned accepts
[akkoma] / lib / pleroma / http / http.ex
index 8ded76601c19b116e1cbcc6a6ddbffea132a831e..b37b3fa8927c252a9b357e51d5635ca20f5d2376 100644 (file)
@@ -69,14 +69,18 @@ defmodule Pleroma.HTTP do
         request = build_request(method, headers, options, url, body, params)
 
         adapter = Application.get_env(:tesla, :adapter)
-        client = Tesla.client([Tesla.Middleware.FollowRedirects], adapter)
 
-        response = request(client, request)
+        client = Tesla.client(adapter_middlewares(adapter), adapter)
 
-        AdapterHelper.after_request(adapter_opts)
-
-        response
+        maybe_limit(
+          fn ->
+            request(client, request)
+          end,
+          adapter,
+          adapter_opts
+        )
 
+      # Connection release is handled in a custom FollowRedirects middleware
       err ->
         err
     end
@@ -95,4 +99,19 @@ defmodule Pleroma.HTTP do
     |> Builder.add_param(:query, :query, params)
     |> Builder.convert_to_keyword()
   end
+
+  @prefix Pleroma.Gun.ConnectionPool
+  defp maybe_limit(fun, Tesla.Adapter.Gun, opts) do
+    ConcurrentLimiter.limit(:"#{@prefix}.#{opts[:pool] || :default}", fun)
+  end
+
+  defp maybe_limit(fun, _, _) do
+    fun.()
+  end
+
+  defp adapter_middlewares(Tesla.Adapter.Gun) do
+    [Pleroma.HTTP.Middleware.FollowRedirects]
+  end
+
+  defp adapter_middlewares(_), do: []
 end