aboutsummaryrefslogtreecommitdiffstats
path: root/erts/preloaded/src/socket.erl
diff options
context:
space:
mode:
authorMicael Karlberg <[email protected]>2018-06-18 18:19:39 +0200
committerMicael Karlberg <[email protected]>2018-09-18 14:50:18 +0200
commitb63a16d0958bd748644d22f13f35f8956a903d6c (patch)
tree23f56ff33354c084b344804f73d71f1235a10b59 /erts/preloaded/src/socket.erl
parent978a8a855c57bdfb20d3bcd8a6055968f3be3887 (diff)
downloadotp-b63a16d0958bd748644d22f13f35f8956a903d6c.tar.gz
otp-b63a16d0958bd748644d22f13f35f8956a903d6c.tar.bz2
otp-b63a16d0958bd748644d22f13f35f8956a903d6c.zip
[socket+net-nif] Moved common functions into util files
The common stuff, like decode and encode of common types (soch as socket address), has been moved into a util file (socket_util). The debug stuff has also been moved into its own file. Also introduced a common include file for common macros and types. OTP-14831
Diffstat (limited to 'erts/preloaded/src/socket.erl')
-rw-r--r--erts/preloaded/src/socket.erl56
1 files changed, 12 insertions, 44 deletions
diff --git a/erts/preloaded/src/socket.erl b/erts/preloaded/src/socket.erl
index b89fa06da8..ba3ff6bab9 100644
--- a/erts/preloaded/src/socket.erl
+++ b/erts/preloaded/src/socket.erl
@@ -657,7 +657,7 @@ open(Domain, Type, Protocol0, Extra) when is_map(Extra) ->
end.
%% Note that this is just a convenience function for when the protocol was
-%% not specified. If its actually specied, then that will be selected.
+%% not specified. If its actually specified, then that will be selected.
%% Also, this only works for the some of the type's (stream, dgram and
%% seqpacket).
default_protocol(null, stream) -> tcp;
@@ -677,57 +677,22 @@ default_protocol(Protocol, _) -> Protocol.
Addr :: any | loopback | sockaddr(),
Reason :: term().
-bind(#socket{info = #{domain := inet}} = Socket, Addr)
+bind(#socket{ref = SockRef, info = #{domain := inet}} = _Socket, Addr)
when ((Addr =:= any) orelse (Addr =:= loopback)) ->
- bind(Socket, ?SOCKADDR_IN4_DEFAULT(Addr));
-bind(#socket{info = #{domain := inet6}} = Socket, Addr)
+ nif_bind(SockRef, ?SOCKADDR_IN4_DEFAULT(Addr));
+bind(#socket{ref = SockRef, info = #{domain := inet6}} = _Socket, Addr)
when ((Addr =:= any) orelse (Addr =:= loopback)) ->
- bind(Socket, ?SOCKADDR_IN6_DEFAULT(Addr));
-bind(Socket, Addr) ->
+ nif_bind(SockRef, ?SOCKADDR_IN6_DEFAULT(Addr));
+bind(#socket{ref = SockRef} = _Socket, Addr) when is_map(Addr) ->
try
begin
- nif_bind(Socket, ensure_sockaddr(Addr))
+ nif_bind(SockRef, ensure_sockaddr(Addr))
end
catch
throw:ERROR ->
ERROR
end.
-%% -spec bind(Socket, FileOrAddr) -> ok | {error, Reason} when
-%% Socket :: socket(),
-%% FileOrAddr :: binary() | string() | in_sockaddr() | any | loopback,
-%% Reason :: term().
-
-%% bind(Socket, File) when is_binary(File) ->
-%% if
-%% byte_size(File) =:= 0 ->
-%% {error, einval};
-%% byte_size(File) =< 255 ->
-%% nif_bind(Socket, File);
-%% true ->
-%% {error, einval}
-%% end;
-%% bind(Socket, File) when is_list(File) andalso (File =/= []) ->
-%% Bin = unicode:characters_to_binary(File, file:native_name_encoding()),
-%% if
-%% byte_size(Bin) =< 255 ->
-%% nif_bind(Socket, Bin);
-%% true ->
-%% {error, einval}
-%% end;
-%% bind(#socket{info = #{domain := inet}} = Socket, Addr)
-%% when ((Addr =:= any) orelse (Addr =:= loopback)) ->
-%% bind(Socket, #in4_sockaddr{addr = Addr});
-%% bind(#socket{info = #{domain := inet6}} = Socket, Addr)
-%% when ((Addr =:= any) orelse (Addr =:= loopback)) ->
-%% bind(Socket, #in6_sockaddr{addr = Addr});
-%% bind(#socket{info = #{domain := inet}, ref = SockRef} = _Socket, SockAddr)
-%% when is_record(SockAddr, in4_sockaddr) ->
-%% nif_bind(SockRef, SockAddr);
-%% bind(#socket{info = #{domain := inet6}, ref = SockRef} = _Socket, SockAddr)
-%% when is_record(SockAddr, in6_sockaddr) ->
-%% nif_bind(SockRef, SockAddr).
-
%% ===========================================================================
@@ -749,6 +714,9 @@ connect(Socket, SockAddr) ->
Timeout :: timeout(),
Reason :: term().
+%% <KOLLA>
+%% Is it possible to connect with family = local for the (dest) sockaddr?
+%% </KOLLA>
connect(_Socket, _SockAddr, Timeout)
when (is_integer(Timeout) andalso (Timeout =< 0)) ->
{error, timeout};
@@ -970,9 +938,9 @@ sendto(Socket, Data, Flags, Dest) ->
Timeout :: timeout(),
Reason :: term().
-sendto(Socket, Data, Flags, DestSockAddr, Timeout) when is_list(Data) ->
+sendto(Socket, Data, Flags, Dest, Timeout) when is_list(Data) ->
Bin = erlang:list_to_binary(Data),
- sendto(Socket, Bin, Flags, DestSockAddr, Timeout);
+ sendto(Socket, Bin, Flags, Dest, Timeout);
sendto(#socket{ref = SockRef}, Data, Flags, Dest, Timeout)
when is_binary(Data) andalso
is_list(Flags) andalso