Packages

otpbp

7.3.3
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
otpbp src otpbp_gen_udp.erl
Raw

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.