summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenrik Nord <henrik@erlang.org>2014-07-22 17:37:52 +0200
committerHenrik Nord <henrik@erlang.org>2014-07-22 17:37:52 +0200
commita60f3d879dfcdd018f1fea20790be901fbafeae4 (patch)
treeb6cc19578e968c38a2510585e481b98c279bf7c4
parent03a1fcf5346233f76c8dc50844e132f4760154d6 (diff)
downloaderlang-a60f3d879dfcdd018f1fea20790be901fbafeae4.tar.gz
Fix default behaviour for legacy fdopen
Update testcase for gen_udp:open/2 with option fd
-rw-r--r--lib/kernel/src/inet.erl5
-rw-r--r--lib/kernel/test/gen_udp_SUITE.erl4
2 files changed, 5 insertions, 4 deletions
diff --git a/lib/kernel/src/inet.erl b/lib/kernel/src/inet.erl
index 74fc7b0ac6..35236f4cb3 100644
--- a/lib/kernel/src/inet.erl
+++ b/lib/kernel/src/inet.erl
@@ -1287,10 +1287,11 @@ change_bindx_0_port({_IP, _Port}=Addr, _AssignedPort) ->
{'ok', socket()} | {'error', posix()}.
fdopen(Fd, Opts, Protocol, Family, Type, Module) ->
- fdopen(Fd, undefined, 0, Opts, Protocol, Family, Type, Module).
+ fdopen(Fd, any, 0, Opts, Protocol, Family, Type, Module).
fdopen(Fd, Addr, Port, Opts, Protocol, Family, Type, Module) ->
- IsAnyAddr = (Addr == {0,0,0,0} orelse Addr == {0,0,0,0,0,0,0,0}),
+ IsAnyAddr = (Addr == {0,0,0,0} orelse Addr == {0,0,0,0,0,0,0,0}
+ orelse Addr == any),
Bound = Port == 0 andalso IsAnyAddr,
case prim_inet:fdopen(Protocol, Family, Type, Fd, Bound) of
{ok, S} ->
diff --git a/lib/kernel/test/gen_udp_SUITE.erl b/lib/kernel/test/gen_udp_SUITE.erl
index cd768813cf..8cc811e0b5 100644
--- a/lib/kernel/test/gen_udp_SUITE.erl
+++ b/lib/kernel/test/gen_udp_SUITE.erl
@@ -448,8 +448,8 @@ open_fd(Config) when is_list(Config) ->
{ok,S1} = gen_udp:open(0),
{ok,P2} = inet:port(S1),
{ok,FD} = prim_inet:getfd(S1),
- {error,einval} = gen_udp:open(P2, [inet6, {fd,FD}]),
- {ok,S2} = gen_udp:open(P2, [{fd,FD}]),
+ {error,einval} = gen_udp:open(0, [inet6, {fd,FD}]),
+ {ok,S2} = gen_udp:open(0, [{fd,FD}]),
{ok,S3} = gen_udp:open(0),
{ok,P3} = inet:port(S3),
ok = gen_udp:send(S3, Addr, P2, Msg),