Skip to content

Commit

Permalink
Update thrift_socket_transport.erl
Browse files Browse the repository at this point in the history
如果传送的数据量大的时候就会报错。
  • Loading branch information
TianMaiChengGhostRidder authored and Jens-G committed Aug 29, 2022
1 parent 8ad8d5d commit 60fef43
Showing 1 changed file with 18 additions and 1 deletion.
19 changes: 18 additions & 1 deletion lib/erl/src/thrift_socket_transport.erl
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,24 @@ when is_integer(Len), Len >= 0 ->
X when X >= Len ->
{Result, Remaining} = split_binary(Binary, Len),
{State#t_socket{buffer = Remaining}, {ok, Result}};
_ -> recv(State, Len)
_ ->
%%recv(State, Len)
loop_recv(State,Len,Len)
end.

loop_recv(State=#t_socket{buffer = Buf},ReadLen,NextReadLen) when NextReadLen =< 0->
{Result,Remaining}=split_binary(Buf,ReadLen),
{State#t_socket{buffer = Remaining},{ok,Result}};

loop_recv(State=#t_socket{socket = Socket,buffer = Buf},ReadLen,NextReadLen) when NextReadLen >0 ->
case gen_tcp:recv(Socket,0,State#t_socket.recv_timeout) of
{error,Error}->
gen_tcp:close(Socket),
{State,{error,Error}};
{ok,Data}->
Binary=iolist_to_binary([Buf,Data]),
Give=min(iolist_size(Binary),ReadLen),
loop_recv(State#t_socket{buffer = Binary},ReadLen,ReadLen-Give)
end.

recv(State = #t_socket{socket = Socket, buffer = Buf}, Len) ->
Expand Down

0 comments on commit 60fef43

Please sign in to comment.