diff options
| author | Badlop <badlop@process-one.net> | 2010-10-27 21:20:48 +0200 |
|---|---|---|
| committer | Badlop <badlop@process-one.net> | 2010-10-27 21:21:15 +0200 |
| commit | 231d44ffa313a7bca25c7b780ff7a0efa10c63f9 (patch) | |
| tree | 8d6bc29f84cb9efdf762e8312240fb1406ab7429 | |
| parent | Ignore 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.erl | 7 |
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. |
