diff options
author | Micael Karlberg <[email protected]> | 2018-06-13 12:42:56 +0200 |
---|---|---|
committer | Micael Karlberg <[email protected]> | 2018-09-18 13:01:37 +0200 |
commit | 1f4a0eb6629d813be8656db239ee5b98a78088a9 (patch) | |
tree | 83892b1030019ef7f9abf963eb6a5c338dcd1756 /erts/preloaded | |
parent | cb858ed68f2cc21014f37c8f6c1cb0dfc20f6184 (diff) | |
download | otp-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.beam | bin | 38344 -> 38764 bytes | |||
-rw-r--r-- | erts/preloaded/src/socket.erl | 19 |
2 files changed, 14 insertions, 5 deletions
diff --git a/erts/preloaded/ebin/socket.beam b/erts/preloaded/ebin/socket.beam Binary files differindex 33784de074..c4f0390120 100644 --- a/erts/preloaded/ebin/socket.beam +++ b/erts/preloaded/ebin/socket.beam 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). |