diff options
author | Micael Karlberg <[email protected]> | 2011-12-16 10:02:01 +0100 |
---|---|---|
committer | Micael Karlberg <[email protected]> | 2011-12-20 17:09:49 +0100 |
commit | c1fe4ce53f2df2c10078de2abae712d49fd6a633 (patch) | |
tree | 1bb81b3c405fa5d5631a1c6380889a0f5025d39d /lib/inets/src/ftp | |
parent | 021d5c2e49e623d4f43c0cc88a097bc99f3564e6 (diff) | |
download | otp-c1fe4ce53f2df2c10078de2abae712d49fd6a633.tar.gz otp-c1fe4ce53f2df2c10078de2abae712d49fd6a633.tar.bz2 otp-c1fe4ce53f2df2c10078de2abae712d49fd6a633.zip |
[ftp] Fails to open IPv6 connection
Fails to open IPv6 connection due to badly formatted IPv6 address in
EPRT command. The address part of the command incorrectly contained decimal
elements instead of hexadecimal.
Attila Rajmund Nohl
OTP-9827
Diffstat (limited to 'lib/inets/src/ftp')
-rw-r--r-- | lib/inets/src/ftp/ftp.erl | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/lib/inets/src/ftp/ftp.erl b/lib/inets/src/ftp/ftp.erl index ac72963347..3028cd800f 100644 --- a/lib/inets/src/ftp/ftp.erl +++ b/lib/inets/src/ftp/ftp.erl @@ -1912,17 +1912,14 @@ setup_ctrl_connection(Host, Port, Timeout, State) -> setup_data_connection(#state{mode = active, caller = Caller, csock = CSock} = State) -> - IntToString = fun(Element) -> integer_to_list(Element) end, - case (catch inet:sockname(CSock)) of {ok, {{_, _, _, _, _, _, _, _} = IP, _}} -> {ok, LSock} = gen_tcp:listen(0, [{ip, IP}, {active, false}, inet6, binary, {packet, 0}]), {ok, Port} = inet:port(LSock), - Cmd = mk_cmd("EPRT |2|~s:~s:~s:~s:~s:~s:~s:~s|~s|", - lists:map(IntToString, - tuple_to_list(IP) ++ [Port])), + IpAddress = inet_parse:ntoa(IP), + Cmd = mk_cmd("EPRT |2|~s|~p|", [IpAddress, Port]), send_ctrl_message(State, Cmd), activate_ctrl_connection(State), {noreply, State#state{caller = {setup_data_connection, |