summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhref <href+git-pleroma@random.sh>2020-08-21 17:02:57 +0000
committerhref <href+git-pleroma@random.sh>2020-08-21 17:02:57 +0000
commit967afa064bb0dc85c054495b795a57a13cdf3b3c (patch)
treef7b26f4281f3547f5967f9a812a8c14618468ddf
parentaa0a5ffb4849880b5adbcc9188de01ef778381e3 (diff)
Fix truncated images
-rw-r--r--lib/pleroma/helpers/media_helper.ex16
1 files changed, 13 insertions, 3 deletions
diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex
index e11038052..f87be8874 100644
--- a/lib/pleroma/helpers/media_helper.ex
+++ b/lib/pleroma/helpers/media_helper.ex
@@ -19,14 +19,24 @@ defmodule Pleroma.Helpers.MediaHelper do
"""
pid = Port.open({:spawn, cmd}, [:use_stdio, :in, :stream, :exit_status, :binary])
+ loop_recv(pid)
+ end
+
+ defp loop_recv(pid) do
+ loop_recv(pid, <<>>)
+ end
+ defp loop_recv(pid, acc) do
receive do
{^pid, {:data, data}} ->
- send(pid, {self(), :close})
- {:ok, data}
+ loop_recv(pid, acc <> data)
- {^pid, {:exit_status, status}} when status > 0 ->
+ {^pid, {:exit_status, 0}} ->
+ {:ok, acc}
+
+ {^pid, {:exit_status, status}} ->
{:error, status}
end
end
+
end