diff options
author | href <href+git-pleroma@random.sh> | 2020-08-21 17:02:57 +0000 |
---|---|---|
committer | href <href+git-pleroma@random.sh> | 2020-08-21 17:02:57 +0000 |
commit | 967afa064bb0dc85c054495b795a57a13cdf3b3c (patch) | |
tree | f7b26f4281f3547f5967f9a812a8c14618468ddf /lib | |
parent | aa0a5ffb4849880b5adbcc9188de01ef778381e3 (diff) | |
download | pleroma-967afa064bb0dc85c054495b795a57a13cdf3b3c.tar.gz |
Fix truncated images
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/helpers/media_helper.ex | 16 |
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 |