Packages
otpbp
7.2.0
7.18.0
7.16.1
7.15.0
7.14.0
7.13.0
7.12.0
7.11.0
7.10.2
7.9.3
7.9.2
7.9.1
7.8.7
7.8.6
7.8.5
7.8.4
7.7.1
7.7.0
7.6.3
7.6.2
7.6.1
7.6.0
7.5.1
7.5.0
7.4.0
7.3.4
7.3.3
7.3.2
7.3.1
7.3.0
7.2.0
7.1.1
7.1.0
7.0.4
7.0.3
7.0.2
7.0.1
6.26.0
6.25.0
6.24.0
6.23.0
6.22.2
6.21.3
6.21.2
6.21.1
6.20.2
6.19.1
6.19.0
6.18.3
6.18.2
6.18.1
6.18.0
6.17.1
6.17.0
6.16.0
6.15.4
6.15.3
6.15.2
6.15.1
6.15.0
6.14.0
6.13.5
6.13.4
6.13.3
6.13.2
6.13.1
6.13.0
6.12.0
6.11.2
6.11.1
6.10.0
6.9.2
6.9.1
6.9.0
6.8.0
6.7.1
6.7.0
6.6.4
6.6.3
6.6.2
6.6.1
6.6.0
6.5.0
6.4.0
6.3.3
6.3.2
6.3.1
6.3.0
6.2.1
6.2.0
6.1.0
6.0.0
5.39.0
5.38.0
5.37.0
5.36.0
5.35.2
5.34.3
5.34.2
5.34.1
5.33.1
5.32.1
5.32.0
5.31.3
5.31.2
5.31.1
5.31.0
5.30.1
5.30.0
5.29.0
5.28.4
5.28.3
5.28.2
5.28.1
5.28.0
5.27.0
5.26.5
5.26.4
5.26.3
5.26.2
5.26.1
5.26.0
5.25.0
5.24.2
5.24.1
5.23.0
5.22.2
5.22.1
5.22.0
5.21.0
5.20.1
5.20.0
5.19.4
5.19.3
5.19.2
5.19.1
5.19.0
5.18.0
5.17.0
5.16.3
5.16.1
5.16.0
5.15.1
5.15.0
5.14.0
5.13.1
5.13.0
5.12.1
5.12.0
5.11.2
5.11.1
5.10.1
5.10.0
5.9.0
5.8.0
5.7.0
5.6.1
5.6.0
5.5.0
5.4.2
5.4.1
5.4.0
5.3.0
5.2.2
5.2.1
5.2.0
5.1.2
5.1.1
4.79.0
4.78.0
4.77.0
4.76.2
4.75.3
4.75.2
4.75.1
4.74.0
4.73.1
4.73.0
4.72.3
4.72.2
4.72.1
4.72.0
4.71.1
4.71.0
4.70.0
4.69.4
4.69.3
4.69.2
4.69.1
4.69.0
4.68.0
4.67.5
4.67.4
4.67.3
4.67.2
4.67.0
4.66.0
4.65.2
4.65.1
4.64.0
4.63.2
4.63.1
4.63.0
4.62.0
4.61.1
4.61.0
4.60.4
4.60.3
4.60.2
4.60.1
4.60.0
4.59.0
4.58.0
4.57.2
4.57.1
4.57.0
4.56.2
4.56.1
4.56.0
4.55.0
4.54.0
4.53.0
4.52.1
4.52.0
4.51.3
4.51.2
4.51.0
4.50.0
4.49.3
4.49.2
OTP backports
Current section
Files
Jump to
Current section
Files
src/otpbp_gen_udp.erl
-module(otpbp_gen_udp).
-compile({parse_transform, otpbp_pt}).
-ifndef(HAVE_gen_udp__connect_2).
% OTP 24.3
-export([connect/2]).
-endif.
-ifndef(HAVE_gen_udp__send_3).
% OTP 24.3
-export([send/3]).
-endif.
-ifndef(HAVE_gen_udp__send_5).
% OTP 24.3
-export([send/5]).
-endif.
-ifndef(HAVE_gen_udp__send_3).
-ifdef(HAVE_gen_udp__send_5).
-import(gen_udp, [send/5]).
-endif.
-endif.
-ifndef(HAVE_gen_udp__connect_2).
connect(S, SockAddr) when is_port(S), is_map(SockAddr) ->
case inet_db:lookup_socket(S) of
{ok, Mod} -> Mod:connect(S, inet:ensure_sockaddr(SockAddr));
Error -> Error
end.
-endif.
-define(module_socket(Handler, Handle), {'$inet', Handler, Handle}).
-ifndef(HAVE_gen_udp__send_3).
send(?module_socket(GenUdpMod, _) = S, Destination, Packet) when is_atom(GenUdpMod) ->
GenUdpMod:?FUNCTION_NAME(S, Destination, Packet);
send(Socket, Destination, Packet) -> send(Socket, Destination, [], Packet).
send(S, #{family := Fam} = Destination, AncData, Packet)
when is_port(S), Fam =:= inet orelse Fam =:= inet6, is_list(AncData) ->
case inet_db:lookup_socket(S) of
{ok, Mod} -> Mod:send(S, inet:ensure_sockaddr(Destination), AncData, Packet);
Error -> Error
end;
send(S, {_, _} = Destination, 0, Packet) when is_port(S) ->
case inet_db:lookup_socket(S) of
{ok, Mod} -> Mod:send(S, Destination, [], Packet);
Error -> Error
end;
send(S, {_, _}, PortZero, _Packet) when is_port(S), is_integer(PortZero) -> {error, einval};
send(S, {_, _} = Destination, AncData, Packet) when is_port(S), is_list(AncData) ->
case inet_db:lookup_socket(S) of
{ok, Mod} -> Mod:send(S, Destination, AncData, Packet);
Error -> Error
end;
send(S, Host, Port, Packet) when is_port(S) -> send(S, Host, Port, [], Packet).
-endif.
-ifndef(HAVE_gen_udp__send_5).
send(?module_socket(GenUdpMod, _) = S, Host, Port, AncData, Packet) when is_atom(GenUdpMod) ->
GenUdpMod:?FUNCTION_NAME(S, Host, Port, AncData, Packet);
send(S, Host, Port, AncData, Packet) when is_port(S), is_list(AncData) ->
case inet_db:lookup_socket(S) of
{ok, Mod} ->
case Mod:getaddr(Host) of
{ok, IP} ->
case Mod:getserv(Port) of
{ok, P} -> Mod:send(S, {IP, P}, AncData, Packet);
{error, einval} -> exit(badarg);
Error -> Error
end;
{error, einval} -> exit(badarg);
Error -> Error
end;
Error -> Error
end.
-endif.