fix(gw): not packing udp packages

This commit is contained in:
JianBo He 2021-09-03 09:44:10 +08:00
parent da4e3f47a3
commit cfe64d9c6f
1 changed files with 17 additions and 2 deletions

View File

@ -226,6 +226,9 @@ esockd_send(Data, #state{socket = {udp, _SockPid, Sock},
esockd_send(Data, #state{socket = {esockd_transport, Sock}}) ->
esockd_transport:async_send(Sock, Data).
is_datadram_socket({esockd_transport, _}) -> false;
is_datadram_socket({udp, _, _}) -> true.
%%--------------------------------------------------------------------
%% callbacks
%%--------------------------------------------------------------------
@ -678,8 +681,20 @@ with_channel(Fun, Args, State = #state{
%%--------------------------------------------------------------------
%% Handle outgoing packets
handle_outgoing(Packets, State) when is_list(Packets) ->
send(lists:map(serialize_and_inc_stats_fun(State), Packets), State);
handle_outgoing(_Packets = [], _State) ->
ok;
handle_outgoing(Packets,
State = #state{socket = Socket}) when is_list(Packets) ->
case is_datadram_socket(Socket) of
false ->
send(
lists:map(serialize_and_inc_stats_fun(State), Packets),
State);
_ ->
lists:foreach(fun(Packet) ->
handle_outgoing(Packet, State)
end, Packets)
end;
handle_outgoing(Packet, State) ->
send((serialize_and_inc_stats_fun(State))(Packet), State).