aboutsummaryrefslogtreecommitdiffstats
path: root/erts/preloaded
diff options
context:
space:
mode:
authorMicael Karlberg <[email protected]>2018-06-13 12:42:56 +0200
committerMicael Karlberg <[email protected]>2018-09-18 13:01:37 +0200
commit1f4a0eb6629d813be8656db239ee5b98a78088a9 (patch)
tree83892b1030019ef7f9abf963eb6a5c338dcd1756 /erts/preloaded
parentcb858ed68f2cc21014f37c8f6c1cb0dfc20f6184 (diff)
downloadotp-1f4a0eb6629d813be8656db239ee5b98a78088a9.tar.gz
otp-1f4a0eb6629d813be8656db239ee5b98a78088a9.tar.bz2
otp-1f4a0eb6629d813be8656db239ee5b98a78088a9.zip
[socket-nif] Added some use of debug and fixed bind
Added (some) use of the debug printouts in (nif-) open and bind. Also fixed handling of the address argument in the bind function(s) (since it was changed to be of the in_sockaddr()). OTP-14831
Diffstat (limited to 'erts/preloaded')
-rw-r--r--erts/preloaded/ebin/socket.beambin38344 -> 38764 bytes
-rw-r--r--erts/preloaded/src/socket.erl19
2 files changed, 14 insertions, 5 deletions
diff --git a/erts/preloaded/ebin/socket.beam b/erts/preloaded/ebin/socket.beam
index 33784de074..c4f0390120 100644
--- a/erts/preloaded/ebin/socket.beam
+++ b/erts/preloaded/ebin/socket.beam
Binary files differ
diff --git a/erts/preloaded/src/socket.erl b/erts/preloaded/src/socket.erl
index bab4fce3f3..5a0748e8fb 100644
--- a/erts/preloaded/src/socket.erl
+++ b/erts/preloaded/src/socket.erl
@@ -324,7 +324,9 @@
mincost |
integer().
--type socket_info() :: map().
+-type socket_info() :: #{domain => domain(),
+ type => type(),
+ protocol => protocol()}.
-record(socket, {info :: socket_info(),
ref :: reference()}).
%% -opaque socket() :: {socket, socket_info(), reference()}.
@@ -671,10 +673,17 @@ bind(Socket, File) when is_list(File) andalso (File =/= []) ->
true ->
{error, einval}
end;
-bind(#socket{ref = SockRef} = _Socket, SockAddr)
- when is_record(SockAddr, in4_sockaddr) orelse
- is_record(SockAddr, in6_sockaddr) orelse
- (SockAddr =:= any) orelse (SockAddr =:= loopback) ->
+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).