aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2010-10-27 21:20:48 +0200
committerBadlop <badlop@process-one.net>2010-10-27 21:21:15 +0200
commit231d44ffa313a7bca25c7b780ff7a0efa10c63f9 (patch)
tree8d6bc29f84cb9efdf762e8312240fb1406ab7429
parentIgnore Length argument to tls:recv/[23] (EJAB-1327) (diff)
Handle binary data from SockMod:recv in ejabberd_http:recv_data/3 (thanks to Andreas Köhler)(EJAB-1331)
-rw-r--r--src/web/ejabberd_http.erl7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/web/ejabberd_http.erl b/src/web/ejabberd_http.erl
index 5bb8f3273..45a429833 100644
--- a/src/web/ejabberd_http.erl
+++ b/src/web/ejabberd_http.erl
@@ -473,14 +473,17 @@ recv_data(State, Len, Acc) ->
case State#state.trail of
[] ->
case (State#state.sockmod):recv(State#state.socket, Len, 300000) of
+ {ok, Binary} when is_binary(Binary) ->
+ Data = binary_to_list(Binary),
+ recv_data(State, Len - length(Data), Acc ++ Data);
{ok, Data} ->
- recv_data(State, Len - length(Data), [Acc | Data]);
+ recv_data(State, Len - length(Data), Acc ++ Data);
_ ->
""
end;
_ ->
Trail = State#state.trail,
- recv_data(State#state{trail = ""}, Len - length(Trail), [Acc | Trail])
+ recv_data(State#state{trail = ""}, Len - length(Trail), Acc ++ Trail)
end.