aboutsummaryrefslogtreecommitdiffstats
path: root/lib/inets/src/ftp
diff options
context:
space:
mode:
authorMicael Karlberg <[email protected]>2011-12-16 10:02:01 +0100
committerMicael Karlberg <[email protected]>2011-12-20 17:09:49 +0100
commitc1fe4ce53f2df2c10078de2abae712d49fd6a633 (patch)
tree1bb81b3c405fa5d5631a1c6380889a0f5025d39d /lib/inets/src/ftp
parent021d5c2e49e623d4f43c0cc88a097bc99f3564e6 (diff)
downloadotp-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.erl7
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,