diff options
| -rw-r--r-- | src/rabbit_reader.erl | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/rabbit_reader.erl b/src/rabbit_reader.erl index 4dcb744641..5ecb2e73de 100644 --- a/src/rabbit_reader.erl +++ b/src/rabbit_reader.erl @@ -246,8 +246,11 @@ recvloop(Deb, State = #v1{sock = Sock, recv_length = Length, buf = Buf}) -> case iolist_size(Buf) < Length of true -> ok = rabbit_net:setopts(Sock, [{active, once}]), mainloop(Deb, State#v1{pending_recv = true}); - false -> {Data, Rest} = split_binary( - list_to_binary(lists:reverse(Buf)), Length), + false -> {Data, Rest} = split_binary(case Buf of + [B] -> B; + _ -> list_to_binary( + lists:reverse(Buf)) + end, Length), recvloop(Deb, handle_input(State#v1.callback, Data, State#v1{buf = [Rest]})) end. |
